1

我最近开始在工作中使用 lucene.net 进行内部项目。我正在寻找使用 lucene.net 创建一种自动完成功能。我的索引存储显示名称,当我进行通配符搜索时,即 James*,它工作正常。

问题似乎是当空格出现在单词之间时,即 James Bon* 它似乎忘记了第一个单词并开始尝试匹配 Bon。

不确定我是否做错了什么,但尝试使用一些不同的分析器但没有运气。

有人有任何想法可以让我走上正轨吗?

28/11/2012

再次查看我的项目后,我意识到我正在使用 MultiFieldQueryParser 来尝试搜索多个字段。尝试了更改 DefaultOperator 的建议,但没有运气。

var analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30);
var mparser = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_30, new string[] { "displayname", "company", "email" }, analyzer);
4

2 回答 2

2

默认情况下,Lucene.netOR对提供的术语进行搜索,而不是AND搜索。使用此代码更改它:

parser.SetOperator(QueryParser.DEFAULT_OPERATOR_AND);
于 2012-11-27T22:03:54.870 回答
0

如果您只是在单个字段上执行多词查询,那么您希望多词表现得像“喜欢”运算符,然后使用下面的行。

parser.DefaultOperator = QueryParser.Operator.AND;
于 2016-06-15T11:41:30.140 回答