Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字段中的多词搜索_C#_Lucene.net - Fatal编程技术网

C# 字段中的多词搜索

C# 字段中的多词搜索,c#,lucene.net,C#,Lucene.net,我最近开始在lucene.net上玩一个内部项目。我希望使用lucene.net创建一种类型的自动完成。我的索引存储显示名称,当我进行通配符搜索时,即James*它工作正常 问题似乎是当单词之间出现空格时,即James Bon,它似乎忘记了第一个单词,开始尝试匹配Bon 不确定我是否做错了什么,但尝试使用了一些不同的分析仪,但没有运气 有人有什么想法能让我走上正轨吗 2012年11月28日 在再次查看我的项目后,我意识到我正在使用MultiFieldQueryParser来尝试搜索多个字段。尝试

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

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

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

有人有什么想法能让我走上正轨吗

2012年11月28日

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

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);

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

parser.SetOperator(QueryParser.DEFAULT_OPERATOR_AND);

若您只是在单个字段上执行多词查询,那个么您希望多词的行为类似于“like”操作符,然后使用下面的行

parser.DefaultOperator = QueryParser.Operator.AND;

您是否尝试过
queryParser.SetDefaultOperator(queryParser.Operator.AND)?“Lucene支持在单个术语中进行单字符和多字符通配符搜索(而不是在短语查询中)。”感谢您的建议。我会尝试一下,让你知道。