2010-06-02 66 views
0

我已經設置了Solr的第一個'安裝',其中每個索引(文檔)代表一個音樂作品(包含數字(int),標題(字符串),版本(字符串),作曲家(字符串)和關鍵字(串))。我已將字段'標題'設置爲默認搜索字段。Solr:我如何索引和搜索幾個字段?

但是,當我想對所有字段執行查詢時,我該怎麼辦?我想讓用戶有機會在所有領域進行搜索,並且據我所知至少有兩種選擇:

(1)指定查詢應針對哪些字段。

(2)使用複製域設置Solr配置,以便將添加到每個域的值複製到可用於搜索的「全部捕獲」域。然而,在這種情況下,我不確定事情會發生什麼,當我考慮到各個領域的數據類型並不完全相同時(各個領域對較小的程度會通過過濾器,但作爲複製領域值是在原始字段的過濾器運行之前從原始字段中獲取的,我必須將一個單一過濾器應用於複製字段上的所有值。這又會導致整數被「過濾」,就像字符串一樣將)。

這是我應該使用複製域的情況嗎?乍一看,似乎在所有領域搜索都更加「靈活」。但是,也許有成本?

所有的反饋讚賞!謝謝!

回答

1

執行復制字段時,目標字段內的數據將使用爲該字段定義的分析器編制索引。因此,如果您將目標字段定義爲文本數據,則最好只複製其中的文本數據。所以是的,在同一個字段中複製一個整數可能沒有意義。但是,您是否真的希望用戶能夠在默認搜索中搜索您的「號碼」字段?它對於標題,作曲者和關鍵字是有意義的,但也許不適用於可能表示數據庫中的id的整數字段。

查詢所有字段的另一種選擇是使用Dismax。您可以準確指定要查詢的字段,還可以爲每個字段定義特定的引導。你也可以定義一個默認排序,爲更多最近的文檔和許多其他花哨的東西添加額外的提升。

+0

謝謝你的回答。然而,我不知道它是否有任何後果(例如,性能方面)來搜索多個字段,而不是基於複製字段值(複製字段)搜索單個字段? – sbrattla 2010-06-14 07:11:30

+0

在性能方面,我認爲不同領域的搜索與在同一領域多次搜索之間存在顯着差異。 Lucene必須對查詢的每個條款進行二分查找。不管它在相同的字段上進行n次搜索還是在不同的字段上進行n次搜索都不應該不同。 – 2010-06-14 13:30:51

+0

感謝您的輸入! – sbrattla 2010-06-14 13:48:30