title: “Lucenenet入門介紹”
date: 2021-01-11T20:39:26+08:00
draft: true
tags: [‘lucenenet’]
author: “dadigang”
author_cn: “大地缸”
personal: “http://www.real007.cn"
關於作者
如果你還不知道lucenenet是什麼請移步官網簡介
入門介紹
簡單來說是.net的全文搜尋引擎,首先網路上大部分關於lucene的介紹都是基於java的,本文介紹的是基於.net平臺的,可以說是java lucene的移植版本,最初lucenenet開發到3.0的時候進行不下去了,後來在2019-2020又突然釋出了4.8版本,可能真的是由於.net core開源
直接上程式碼吧
開啟一個本地資料庫目錄
var dir = FSDirectory.Open(ludir);
初始化分詞器
switch (this.analyzer) { case "standard": analyzer=new StandardAnalyzer(LuceneVersion.LUCENE_48); break; case "whitespace": analyzer=new WhitespaceAnalyzer(LuceneVersion.LUCENE_48); break; case "smartcn": analyzer=new SmartChineseAnalyzer(LuceneVersion.LUCENE_48); break; default: throw new Exception(); break; } analyzer = new SmartChineseAnalyzer(LuceneVersion.LUCENE_48);
準備寫入一些資料
IndexWriterConfig iwc = new IndexWriterConfig(LuceneVersion.LUCENE_48, analyzer); Document doc = new Document(); Field pathField = new StringField("id", ObjectId.GenerateNewId().ToString(), Field.Store.YES); doc.Add(pathField); Field contentField = new TextField("content", getContent(d), Field.Store.YES); doc.Add(contentField);
Field binaryField = new Lucene.Net.Documents.StoredField("bin",new BytesRef(d.ToBson()));
doc.Add(binaryField);
writer.AddDocument(doc);
* 適時適當的寫入磁碟資料
```csharp
writer.Commit();
- 查詢資料怎麼做
IndexReader reader = DirectoryReader.Open(FSDirectory.Open(directoryInfo.FullName));
IndexSearcher searcher = new IndexSearcher(reader);
// :Post-Release-Update-Version.LUCENE_XY:
Analyzer analyzer = new WhitespaceAnalyzer(LuceneVersion.LUCENE_48);
// :Post-Release-Update-Version.LUCENE_XY:
QueryParser parser = new QueryParser(LuceneVersion.LUCENE_48, search_record_name, analyzer);
BooleanQuery mp = new BooleanQuery();
var sp = line.Split(' ');
foreach (var s in sp)
{
if (s.Trim() == string.Empty) continue;
mp.Add(new TermQuery(new Term(search_record_name,s)),Occur.MUST);
}
var r=searcher.Search(mp, null, Convert.ToInt32(search_result_count));
- 最後獲取搜尋結果資料
var doc=reader.Document(h.Doc); var f = doc.GetBinaryValue("bin"); var bdoc = BsonDocument.ReadFrom(f.Bytes);
所以親愛的小夥伴開始你的資料搜尋之旅吧
本作品採用《CC 協議》,轉載必須註明作者和本文連結