Solr - 以任何顺序包含所有术语的结果

时间:2012-02-14 04:21:18

标签: solr lucene solrnet

在SOLR安装中,当我搜索具有多字搜索词的字段时,我希望SOLR返回包含搜索中所有字词的文档,但它们不需要按照确切的顺序。< / p>

例如,如果我搜索Brown Chicken Brown Cow的标题,我想查找包含所有术语Brown,Chicken和Cow的所有文档,无论标题字段中的顺序如何。因此,例如,标题“鸡和牛有棕色大便”应该与查询匹配。 AFAIK,这也是Google执行搜索的方式。

我尝试过以下查询格式:

1. Title:Brown AND Title:Chicken
2. Title:Brown AND Chicken
3. Title:Brown+Chicken

我对结果非常困惑。在某些情况下,前两个查询返回相同的结果集。在其他情况下,第一个版本将返回许多结果,第二个版本将不返回任何结果。第三个版本似乎满足了我的需求,但我对查询的不同含义感到困惑。

我的所有测试都是针对text_en类型的字段运行的。

<field name="Title" multiValued="false" type="text_en" indexed="true" stored="true"/>

那么,对于这种类型的搜索,最好的SOLR查询/设置是什么?此外,是否有一种简单的方法可以使Solr.NET使用用户输入的搜索词并将其转换为这种格式?

另外,SOLR默认情况下是否会为搜索词组的顺序提供更高的相关性分数?如果没有,那么有什么方法可以实现这一目标?

修改 我的一些困惑是由于搜索非默认字段和默认字段引起的。知道这一点,唯一一致的格式是第一种格式。

2 个答案:

答案 0 :(得分:6)

如果我是你,我会尝试使用:

Title:(Brown Chicken)

括号将使其等同于您的查询号1.报价将强制Solr搜索完全匹配,包括空格和顺序

答案 1 :(得分:2)

请尝试Title:"Brown Chicken"或使用Dismax查询解析器来处理您的查询。


wiki for lucene query parser说话(强调我的):

  

....由于文本是默认字段,因此不需要字段指示符。

     

注意:该字段仅对直接位于之前的字词有效,   所以查询

     

标题:做得对

     

只会在标题字段中找到“Do”。它会找到“它”和“正确”   在默认字段中(在本例中为文本字段)。

您的数据模型中是否只有标题字段?

请运行debugQuery=on来解释您的查询,了解他们的得分方式:在行动中查看https://stackoverflow.com/a/9262300/604511