繁体   English   中英

solr search q = *:*没有结果

[英]No results from solr search q = *:*

使用solr 4.6.0,以下查询不返回任何结果:

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。

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

注意,具有填充(非空) q参数的查询起作用,例如

solr/select/?q=test

这将按预期返回结果。

找到了解决方案。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM