在lucene中使用通配符搜索多词短语

在lucene中使用通配符搜索多词短语,lucene,lucene.net,query-parser,Lucene,Lucene.net,Query Parser,使用以下代码块: public void MultiField(string fieldValue, string[] fieldList) { List<Occur> occurs = new List<Occur>(); foreach (string field in fieldList) { occurs.Add(Occur.SHOULD); } Mu

使用以下代码块:

 public void MultiField(string fieldValue, string[] fieldList)
    {
        List<Occur> occurs = new List<Occur>();
        foreach (string field in fieldList)
        {
            occurs.Add(Occur.SHOULD);
        }
        MultiFieldQueryParser parser = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_30, fieldList, analyzer);
        parser.AllowLeadingWildcard = true;
        Query qry = parser.Parse(fieldValue.ToLower());

        booleanQuery.Add(qry, Occur.MUST);
    }
public void多字段(字符串字段值,字符串[]字段列表)
{
列表发生=新列表();
foreach(字段列表中的字符串字段)
{
发生。添加(发生。应);
}
MultiFieldQueryParser解析器=新的MultiFieldQueryParser(Lucene.Net.Util.Version.Lucene_30,字段列表,分析器);
parser.allowReadingwildcard=true;
Query qry=parser.Parse(fieldValue.ToLower());
booleanQuery.Add(qry,occure.MUST);
}
其中fieldValue是用户输入,fieldList是字段的集合列表。我使用的是标准分析仪

我需要能够搜索启用通配符的多个单词。在当前状态下,当用户输入搜索词(例如“搜索”)时,我的应用程序中的逻辑将向任意一方添加*使其成为“*搜索*”。这带来了预期的结果


但是,如果用户输入了“搜索s”,它将在所有字段中搜索“*搜索”,然后在所有字段中再次搜索“s*”;返回的方式超过了预期的结果。我尝试转义特殊字符/空白,但这也会删除通配符搜索,因为“*”是一个特殊字符。我尝试过使用转义方法并添加“\”“输入到字段值字符串。是否有一种方法可以将整个短语封装起来进行搜索,并在搜索词的开头和结尾添加星号?

可能重复感谢您的回复。然而,其他答案并不能解决在多个字段上搜索的能力。多短语查询只允许您输入一个字段。可能重复感谢您的响应。然而,其他答案并不能解决在多个字段上搜索的能力。多短语查询只允许您输入一个字段。