使用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
这将按预期返回结果。
答案 0 :(得分:1)
找到了解决方案。
搜索处理程序使用DisMaxQParserPlugin
(defType dismax
):
DisMaxQParserPlugin旨在处理简单的用户输入短语(没有繁重的语法)......
*:*
形式的q
对于DisMax解析器无效,但q.alt
提供了一个回退“..默认情况下使用标准查询解析语法进行解析。 。“
将搜索处理程序插件更改为ExtendedDisMax(defType edismax
)可以解决问题。