2014-01-09 16 views
3

使用的Solr 4.6.0以下查詢返回沒有結果:沒有從Solr的搜索答疑結果= *:*

solr/select/?q=*:* 

但去除q參數返回所有結果,例如:

solr/select/ 

請求處理程序配置包含不變量:

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

由於q.alt應該在沒有提供q時定義查詢,兩個查詢不應該相同並返回結果嗎?第一種形式未能退回文件的原因是什麼?

其他背景

我使用django-haystack 2.1.0真正連接到Solr,上述疑問都只是在情況下,「最簡單的失敗案例」,其中空查詢提供。爲了防止返回空結果集的空查詢,我已經重載了乾草堆SearchForm,並且這與solr和乾草堆1.4的老版本一起工作。

如果未提供任何值,則乾草堆「有用」地填充q*:*。不幸的是,這正在打破上述查詢。我可能猴子乾草堆,但我寧願解決solr問題。

請注意,具有填充(非空)q參數的查詢可以工作,例如,

solr/select/?q=test 

這將返回預期結果。

+1

查詢solr/select是什麼?q = *:* return? – jro

+0

我認爲@jro是正確的,''''之前的'/'是有用的。 – cheffe

+0

它返回相同的結果(如你所期望的那樣 - 在請求路由到的地方,結尾的斜線不會改變),我會添加更多的細節。 – Hamish

回答

1

找到了解決方案。

搜索處理器使用DisMaxQParserPlugin(DEFTYPE dismax):

的DisMaxQParserPlugin旨在處理簡單的用戶輸入的短語(不重語法)...

*:*形式的q被對於DisMax解析器無效,但q.alt提供了一個後備,即「..默認情況下使用標準查詢解析語法分析..」

將搜索處理程序插件更改爲ExtendedDisMax(defType edismax)可以解決問題。