【问题标题】:No results from solr search q = *:*solr 搜索没有结果 q = *:*
【发布时间】:2014-01-10 04:28:59
【问题描述】:

使用 solr 4.6.0 以下查询返回 no 结果:

solr/select/?q=*:*

但删除 q 参数会返回 all 结果,例如:

solr/select/

请求处理程序配置包含不变量:

<str name="q.alt">*:*</str>

既然q.alt 应该在没有提供q 的情况下定义查询,那么这两个查询不应该相同并返回结果吗?第一个表格无法返回文件的可能原因有哪些?

附加背景

我使用django-haystack 2.1.0 来实际连接到 solr,在提供空查询的情况下,上述查询只是“最简单的失败案例”。我重载了 haystack SearchForm 以防止空查询返回空结果集,这适用于更旧版本的 solr 和 haystack 1.4。

如果没有提供值,Haystack 会“有帮助地”用 *:* 填充 q。不幸的是,这破坏了上面的查询。我可以猴子补丁干草堆,但我宁愿在 solr 中解决问题。

请注意,带有填充(非空)q 参数的查询可以工作,例如

solr/select/?q=test

这将按预期返回结果。

【问题讨论】:

  • 对 solr/select 的查询返回什么?
  • 我认为@jro 是对的,? 之前的/ 会碍事。
  • 它返回相同的结果(如您所料 - 尾部斜杠不会改变请求路由到的位置。我将添加更多细节。

标签: solr django-haystack


【解决方案1】:

找到了解决办法。

使用的搜索处理程序DisMaxQParserPlugin (defType dismax):

DisMaxQParserPlugin 旨在处理简单的用户输入短语(没有繁重的语法)...

q*:* 形式对 DisMax 解析器无效,但 q.alt 提供了一个回退,即 "..默认情况下使用标准查询解析语法进行解析.." .

将搜索处理程序插件更改为 ExtendedDisMax (defType edismax) 可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多