![](/img/trans.png)
[英]Do I need to create the Document() object every time I read a new document and index it in LUCENE.NET?
[英]How do I detect if there is already a similar document stored in Lucene index
我需要在數據庫中排除重復項。 問題是重復不被認為是完全匹配,而是類似的文檔。 為此我決定使用如下的FuzzyQuery
:
var fuzzyQuery = new global::Lucene.Net.Search.FuzzyQuery(
new Term("text", queryText),
0.8f,
0);
hits = _searcher.Search(query);
我的想法是將最小相似度設置為0.8(我認為足夠高),因此只能找到類似的文檔,不包括那些不夠相似的文檔。
為了測試這段代碼,我決定查看它是否已找到現有文檔。 為變量queryText
分配了一個存儲在索引中的值。 上面的代碼沒有發現任何東西,換句話說,它甚至沒有檢測到完全匹配。
索引是由以下代碼構建的:
doc.Add(new global::Lucene.Net.Documents.Field(
"text",
text,
global::Lucene.Net.Documents.Field.Store.YES,
global::Lucene.Net.Documents.Field.Index.TOKENIZED,
global::Lucene.Net.Documents.Field.TermVector.WITH_POSITIONS_OFFSETS));
我跟着來自下面的recomendations,結果是:TermQuery沒有返回任何結果。 查詢構造與
var _analyzer = new RussianAnalyzer();
var parser = new global::Lucene.Net.QueryParsers
.QueryParser("text", _analyzer);
var query = parser.Parse(queryText);
var _searcher = new IndexSearcher
(Settings.General.Default.LuceneIndexDirectoryPath);
var hits = _searcher.Search(query);
返回多個結果,其中最高分為具有完全匹配的文檔和具有相似內容的其他幾個文檔。
我是對盧克的推薦。 其他一些嘗試:
嘗試在Lucene中使用MoreLikeThis類...它有一些很好的啟發式編碼,可以幫助您識別“類似”文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.