2012-02-27 60 views
9
  • 我使用的Solr 3.3.0使用例如文件夾
  • solrQueryParser defaultOperator = 「或」

我的問題是,沒有按Solr的」開箱即用的工作當我搜索一個多詞詞組時,t似乎返回了很好的結果。多字的查詢上Solr的

以下搜索不返回任何結果。

  1. http://localhost:8080/solr/select/?q=roof+fixing

然而,當我搜索屋頂固定,他們都返回了幾個不錯的成績。

  1. http://localhost:8080/solr/select/?q=roof返回4結果
  2. http://localhost:8080/solr/select/?q=fixing返回3個結果

在查詢 「屋頂固定」,我希望Solr的返回7個結果。 屋頂的4條記錄和修復的3條記錄。

是否有任何特殊配置需要發生?

回答

8

您剛纔錯誤地表達了您的查詢。

嘗試從管理頁面下面的查詢:

(屋頂或固定)

或者,如果你想找到在某一特定領域:

字段名:(屋頂或固定)

當你給SOLR一個像「屋頂修理」這樣的查詢時,你有效地要求在默認字段(或默認的dismax字段集合)中包含「屋頂」和「修復」的所有文檔。意思是重寫你的查詢用戶輸入。這就是我們所做的,但規模較大。我們有一個前端界面,提供了大量的選項並從中生成一個SOLR查詢。人們可以在特定字段中輸入搜索詞,如果有多個詞並且沒有被引用,我們添加AND。然後我們把所有填充的字段或者放在一起。有些字段是特殊的,有一個MIN和一個MAX版本,我們把它變成範圍查詢:[0 TO 125000]。還有一些下拉菜單可以支持多種選擇,我們也可以將它們變成一個OR,例如State:("WA" OR "CA" OR "OR" OR "NV")

+0

我想我理解你的觀點,但是,我讓用戶通過前端界面進行搜索,所以我不能要求用戶輸入*(屋頂或固定)*。 – Filype 2012-02-27 20:54:01

+0

感謝您的額外解釋,但通過輸入http:// localhost:8080/solr/select /?q =(roof%20OR%20fixing) – Filype 2012-02-27 22:14:36

+1

Filype,我似乎沒有得到更多結果如果您要讓用戶搜索前端,並期待搜索行爲或搜索行爲,則應在發送給SOLR之前在後端處理它們的查詢。如上所述,您應該使用圓括號準備您的值。如果要添加OR或AND,請給用戶一個選項,檢測該選項,然後在將它們傳遞給SOLR之前將它們準備並注入到SOLR查詢中。 – Atomox 2013-04-30 14:25:19

0

Solr的方法不一定返回7個結果「屋頂或固定」作爲一個結果可能包括「屋頂」和「固定」。假設「屋頂」有3個結果,「固定」有4個結果,但「屋頂」和「固定」都出現在2個結果中。由於Solr不會返回重複結果,因此只能搜索「屋頂或修復」的5個結果。

您是否嘗試過使用網址編碼空間(「%20」)而不是「+」號?如果默認的操作符是OR,則不需要包含該操作符。

+0

屋頂%20fixing也返回0結果,我理解你的觀點,無論它是7還是5,我都會至少期待4結果。 – Filype 2012-02-27 21:04:00

+0

您正在搜索的字段是否可能未被標記? – 2012-02-28 02:54:55

+0

我的管理員屏幕顯示它是一個字段類型TEXT_EN – Filype 2012-02-28 03:06:21