如何使Solr返回空结果?

时间:2014-08-07 22:18:13

标签: python solr lucene solr-query-syntax

我希望我的搜索工具在排除用户输入的所有元素时具有与Google搜索类似的行为(例如:用户输入为-obama)。在这些情况下,Google会返回一个空结果。在我当前的代码中,我的程序只生成一个空的Solr查询,这会导致Solr中的错误。

我知道您可以输入*:*来获取所有结果,但是我应该填写哪些Solr查询以便Solr返回空搜索结果?

编辑:

为了让它更清楚,问题是当我有像-obama这样的东西时,我希望Solr返回一个空的搜索结果。如果你google -obama,这就是你得到的,但如果你把-obama放在Solr上,似乎结果就是一切(所有文件),除了那些有" obama&#34的那些;

2 个答案:

答案 0 :(得分:0)

如果你的查询如下所示,它会为我返回空结果:

solr/select/?q=-obama&qf=description&defType=dismax

尝试在没有搜索查询的情况下运行否定查询,因此没有返回任何结果。

以下是我得到的回复:

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
<lst name="params">
<str name="q">-obama</str>
<str name="qf">description</str>
<str name="defType">dismax</str>
</lst>
</lst>
<result name="response" numFound="0" start="0"/>
</response>

答案 1 :(得分:0)

当没有找到任何术语时,你不应该查询solr(我非常怀疑谷歌在搜索词为空时查看它的可搜索索引)。在构造solr查询之前,应该将此逻辑构建到用于解析用户提供的查询项的任何机制中。假设用户的输入表示为一个简单的字符串,其中每个单词都被视为唯一的查询字词。您可能希望将空格上的字符串拆分为字符串数组,映射数组并删除前缀为&#34; - &#34;的字符串,然后根据数组中剩余的内容构造查询项。如果展平数组会产生一个空字符串,则返回一个空数组,而不是查询solr。