3

有没有办法在使用 Sitecore Search 和 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);
    ...
}
4

3 回答 3

1

您可能想尝试这样的方法来获取您想要运行的查询。它会将 + 放入(表示所需的术语)并引用该术语,因此它应该与您要查找的内容完全匹配,它对我有用。如果你传入 BooleanClause.Occur.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 并在其中使用查询语法,如果您知道语法应该是什么然后向后工作以查看哪些查询对象,则更容易会产生那个。

于 2013-08-15T14:21:55.757 回答
0

您必须将查询放在双引号中以获得完全匹配的结果。Lucene 支持许多这样的操作符和布尔参数,可以在这里找到:http: //lucene.apache.org/core/2_9_4/queryparsersyntax.html

于 2014-01-08T17:53:30.930 回答
0

这取决于字段类型。如果您有备注或文本字段,则应用部分匹配。如果您想要完全匹配,请改用字符串字段。在那里您可以找到一些详细信息:https ://www.cmsbestpractices.com/bug-how-to-fix-solr-exact-string-matching-with-sitecore/ 。

于 2016-04-18T08:21:06.520 回答