我在 lucene.net 中进行全文搜索时遇到问题,其中搜索结果包含特殊的 lucene 字符。
我的 Lucene 文档中有一个名为“内容”的字段。该字段创建如下,包含索引文档的内容:
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);
然后将该查询添加到用于从 IndexSearcher 获取结果的 BooleanQuery。我认为其余的代码并不那么重要,因为对于 99% 的查询,代码的工作方式都应该如此。我还使用 StandardAnalyzer 来查询索引。
现在问题来了。有时,文档的“内容”字段包含使用“-”分隔的文本
一些文本 一些文本选择杆 一些文本 一些文本
现在,当我使用“选择杆”进行全文搜索(确切的短语)时。查询如下所示:
内容:“选档杆”
这里的问题是也找到了包含上述文本的文档,尽管它不应该被找到,因为这两个词是用“-”分隔的,而不是空白。
我认为这与分析器有关,并且“-”是 lucene 中的特殊字符。
也许有人可以帮我解决这个问题。
在此先感谢马丁