【问题标题】:No result return by Solr when query contains word that is not in the collection当查询包含不在集合中的单词时,Solr 不返回结果
【发布时间】:2014-08-22 02:35:42
【问题描述】:

我正在尝试设置 Solr,但遇到了标题中提到的问题。我刚刚下载了 Solr 并使用了内置示例。当我使用示例文档中出现的单词查询时,例如“ipod”。 Solr 工作正常。但是,当我添加了一些不在这些文档中的单词时,例如“what”。 Solr 不返回任何内容。对我来说,这很奇怪,因为应该计算相关性分数以分别查询术语并加起来。不存在的查询词不应该影响排名(即使坐标范数受到影响,文档的分数也会改变)。

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

【问题讨论】:

    标签: solr


    【解决方案1】:

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

    不总是希望“ipod what”检索与“ipod”相同的子集的原因是,对于比“ipod”更通用的术语(即搜索“如果您仅显示有关 windows 的任何内容的一般点击,则 microsoft windows 将不会被视为一个好的搜索结果 - 在这些情况下,通常最好说“我们没有找到任何东西”)。这完全取决于您的用例。

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

    您可以使用q.op 来配置每个术语是否应该一起进行AND-ed(所有必需)或OR-ed(任何一个都足够)。这会覆盖 schema.xml 中 <solrQueryParser defaultOperator=".."/> 中的(现已弃用)值。

    对于(e)dismax,有mm 参数,它允许您执行更具体但更一般的方式来处理您希望如何执行匹配。 mm 允许您说“至少 50% 的术语应该匹配”或“如果只有两个术语,则两者都应该匹配,但任何超过这应该是可选的”或“匹配所有内容最多四个,然后 75%那个”。

    【讨论】:

    • 非常感谢。我更改了 mm 参数并且它起作用了。最初设置为 100%。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多