当查询包含不在集合中的单词时,Solr不返回结果



我正在尝试设置Solr,但遇到了标题中提到的问题。我只是下载了Solr并使用了内置的示例。当我使用示例文档中出现的单词进行查询时,例如"ipod"。Solr工作正常。但是,当我添加了一些文档中没有的单词时,比如"what"。Solr不返回任何东西。对我来说,这很奇怪,因为相关性分数应该单独计算查询术语并将其相加。不存在的查询词不应该影响排名(即使编码规范受到影响,因此文档的分数也会改变)。

谁能告诉我可能是什么问题?谢谢。

有几种方法可以配置您想要这种行为的方式。我假设您在这些示例中使用了edismax查询处理程序,尽管其中一些也适用于标准lucene查询解析器。

不总是想让"ipod什么"检索与"ipod"相同的子集的原因是,你会得到一个糟糕的结果集和用户体验的术语比"ipod"(即搜索"microsoft windows"将不会被认为是一个好的搜索结果,如果你只显示任何关于windows的一般点击-通常最好说"我们没有找到任何东西"在这种情况下)。这完全取决于你的用例。

首先,你可以自己做,通过在项之间应用ANDOR来获得你正在寻找的确切匹配类型。

您可以使用q.op来配置每个项是应该被AND-ed在一起(全部必需)还是or -ed在一起(任何一个都足够)。这将覆盖schema.xml中<solrQueryParser defaultOperator=".."/>的值(现在已弃用)。

对于(e)dismax,有mm参数,它允许您以更具体但更通用的方式处理您希望如何执行匹配。mm允许你说"至少50%的条款应该匹配"或"如果只有两个条款,两个都应该匹配,但任何超过的都应该是可选的"或"匹配最多四个,超过75%"

最新更新