2010-03-11 55 views
13

我在瀏覽網頁尋找索引和搜索框架,並偶然發現Solr。 我們絕對需要的功能是根據包含命中的字段來提升結果。基於包含命中的字段提升Solr結果

一個小例子:

考慮這樣的記錄:

<movie> 
    <title>The Dark Knight</title> 
    <alternative_title>Batman Begins 2</alternative_title> 
    <year>2008</year> 
    <director>Christopher Nolan</director> 
    <plot>Batman, Gordon and Harvey Dent are forced to deal with the chaos unleashed by an anarchist mastermind known only as the Joker, as it drives each of them to their limits.</plot> 
</movie> 

我想例如結合標題,alternative_title和情節字段到一個搜索欄,這之後是不是太困難查看Solr/Lucene文檔和教程。 但是我也希望有一個標題命中的電影有比score_title命中更高的分數,而他們輪到他們的分數應該高於情節字段中的命中。 有沒有什麼方法可以在xml中表示這種評分,還是我們需要開發一些自定義評分算法?

請注意,我給出的例子是虛構的,真實的數據可能包含100多個字段。

由於提前,

湯姆

回答

6

我沒有使用Solr的,但我已經使用Lucene的。在看:

http://wiki.apache.org/solr/SolrQuerySyntax

它指出,Solr的查詢語法Lucene的一個超集。而在Lucene的,您可以執行每場提升的方法是使用胡蘿蔔運營其次是一些任意值,即

title:batman^10 alternative_title:batman

在查詢時這樣做的好處是,你可以調整隨時提升價值以符合您的任何相關標準。所以如果10的提升值太高,你可以相應地調整它。

11

這是Solr的DismaxQueryParser的設計目的。請參閱http://wiki.apache.org/solr/DisMaxRequestHandler

有很多參數,但您需要自定義的主要參數是「qf」,這是您如何指定應該搜索哪些字段以及如何對每個字段進行提升的方法。所以,如果你想標題佔據主導地位,您可以指定是這樣的:

標題^ 10 alternative_title^2 ^主任1個情節^ 1

爲QF參數的值。您可以通過自定義示例配置和實驗進行設置。

相關問題