我在lucene.net中進行全文搜索時遇到問題,其中搜索結果包含特殊的lucene字符。Lucene.net中帶有特殊字符的確切短語
我在我的Lucene文檔中有一個名爲「content」的字段。這個字段創建如下,幷包含索引文件的內容:
document.Add(new Field("content", fulltext, Field.Store.YES, Field.Index.ANALYZED));
爲了創建索引我使用的是Standardanalyzer。
對於查詢索引我使用以下代碼:
var queryParser = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "content", analayzer);
queryParser.SetAllowLeadingWildcard(true);
queryParser.SetMultiTermRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE);
Query fullTextQuery = queryParser.Parse(queryString);
查詢然後被添加到一個BooleanQuery其用於獲得從IndexSearcher的結果。我認爲其餘的代碼並不那麼重要,因爲代碼的工作原理應該是99%的查詢。我還使用StandardAnalyzer查詢索引。
現在是這個問題。 有時文檔的「內容」字段包含文本分開使用「 - 」
一些文本一些文本選擇槓桿一些文本一些文本
現在,當我做了充分的使用「選檔杆」進行文本搜索(精確短語)。查詢看起來是這樣的:
內容:「換檔桿」
這裏的問題是,還包含上述文本文件被發現,但它不應該被發現,因爲2個字使用「 - 」分隔,而不是空白。
我認爲它與分析器有關,而且「 - 」是lucene中的一個特殊字符。
也許有人可以幫助我解決這個問題。
在此先感謝 馬丁
4年後的一個問題。當標準分析器刪除標點符號時,當涉及到搜索時,查詢解析器也會刪除標點符號。這導致熒光筆,標記忽略單詞的最後/第一個標點符號的詞。我不想使用WhitespaceAnalyzer,因爲它限制了搜索結果。關於如何克服單詞未被突出顯示的最後一個標點符號的任何想法? – JenonD
@JenonD我覺得我不能幫你的時間太長了。如果你願意,我建議發佈一個新問題並引用這個問題。 – smerchek