Search 有没有办法防止使用Sitecore搜索和Lucene进行部分单词匹配?

Search 有没有办法防止使用Sitecore搜索和Lucene进行部分单词匹配?,search,sitecore,lucene.net,sitecore6,Search,Sitecore,Lucene.net,Sitecore6,在使用Sitecore搜索和Lucene时,有没有办法不匹配部分单词?例如,在搜索“Bos”时,我不希望与“Boston”一词匹配。有没有办法要求整个单词匹配?下面是一段代码片段。我使用的是FieldQuery bool _foundHits = false; _index = SearchManager.GetIndex("product_version_index"); using (IndexSearchContext _searchContext = _index.CreateSearc

在使用Sitecore搜索和Lucene时,有没有办法不匹配部分单词?例如,在搜索“Bos”时,我不希望与“Boston”一词匹配。有没有办法要求整个单词匹配?下面是一段代码片段。我使用的是FieldQuery

bool _foundHits = false;
_index = SearchManager.GetIndex("product_version_index");
using (IndexSearchContext _searchContext = _index.CreateSearchContext())
{
    QueryBase _query = new FieldQuery("title", txtProduct.Text.Trim());
    SearchHits _hits = _searchContext.Search(_query, 1000);
    ...
}

您可能需要尝试类似的方法来获取要运行的查询。它会把+放进(表示一个必需的术语)并引用术语,所以它应该完全符合你所寻找的,它对我有用。假设您正在传入BooleanClause.occure.MUST

    protected BooleanQuery GetBooleanQuery(string fieldName, string term, BooleanClause.Occur occur)
    {
        QueryParser parser = new QueryParser(fieldName, new StandardAnalyzer());

        BooleanQuery query = new BooleanQuery();
        query.Add(parser.Parse(term), occur);
        return query;
    }

基本上,您的查询最终被解析为+title:“Bos”,您还可以下载Luke并在其中使用查询语法,如果您知道语法应该是什么,然后反向工作以查看哪些查询对象将生成该语法,就更容易了

您必须将查询置于双引号中,以获得精确的匹配结果。Lucene支持许多这样的运算符和布尔参数,可以在这里找到:

它取决于字段类型。如果有备注或文本字段,则应用部分匹配。如果要精确匹配,请使用字符串字段。在那里你可以找到一些细节:。

不,它对我不起作用。如果我搜索“Bos”,它仍然会返回字段中带有“Boston”的项目。