solr search q = *:*没有结果

时间:2014-01-09 03:00:27

标签: solr django-haystack

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

solr/select/?q=*:*

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

solr/select/

请求处理程序配置包含invarient:

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

由于q.alt应该在未提供q时定义查询,因此两个查询不应该相同并返回结果吗?第一个表单无法返回文档的原因有哪些?

其他背景

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

如果没有提供任何值,干草堆“有用”会将q*:*一起填充。不幸的是,这打破了上面的查询。我可以猴子补丁干草堆,但我宁愿在solr中修复这个问题。

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

solr/select/?q=test

这将按预期返回结果。

1 个答案:

答案 0 :(得分:1)

找到了解决方案。

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

  

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

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

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