2011-06-22 48 views
0

一個字的比賽我有某些領域Solr模式:升壓Solr的結果與多值

<field name="id" type="integer" indexed="true" stored="true" required="true" multiValued="false" /> 
<field name="title" type="text" indexed="true" stored="true" multiValued="false" /> 
<field name="note" type="text" indexed="true" stored="true" multiValued="false" /> 

現在我尋找在它與查詢(其中%S是我的搜索字符串)

q={!boost b=recip(ms(NOW,date),3.16e-11,1,1)}%s&defType=dismax&qf=title^100 note

我需要每個記錄的標籤。

<field name="tags" type="string" indexed="true" stored="false" multiValued="true" /> 

我該如何提高該記錄的結果,其中一個單詞與「tags」字段的值之一匹配?

更新

就想通了,如果我刪除{!提振B = RECIP(MS(NOW,日期),3.16e-11,1,1)}從我的Q,我的查詢工作究竟如何我想要。但隨着這一點,不要

更新2

就想通了,以前「只是想出了」是completele錯了。我爲某些搜索字符串工作,但它不適合我。我認爲我需要這樣的行爲:

在「title」和「note」字段我需要帶有「AND」的搜索詞,但是在「tags」字段中,我需要使用「OR」進行搜索。我如何用dismax做到這一點?

我現在嘗試用{!升壓}和查詢功能,但沒有任何好的結果

回答

0

您的查詢看起來像你從網上覆制。

1.)確保在您的環境中存在名爲「date」的字段。

2.)看看solr的輸出。如果你在tomcat中運行solr,那麼看看catalina.out ...

...對於命中和錯誤的數量。

如何提高記錄的結果,其中一個單詞與「標記」字段的值之一相匹配?

看那高度分量爲:http://wiki.apache.org/solr/QueryElevationComponent

+0

field date exists and this query working well。請參閱我的主要問題的編輯,我把那裏「更新2」 QueryElevation只是可以提升特殊搜索字符串的一些記錄。 我需要的:如果在「標籤」多值字段包含搜索字符串中的一個字,然後提高這個項目的相關性。 – striker

0

您可以使用dismax真實bq(升壓查詢)來實現這一目標。閱讀關於bq這裏:http://wiki.apache.org/solr/DisMaxQParserPlugin#bq_.28Boost_Query.29

你必須將你的查詢分解成單獨的單詞和使用每個單獨的搜索標籤。因此,如果您的查詢是「abc pqr」,您將擁有:

q={!boost b=recip(ms(NOW,date),3.16e-11,1,1)}%s&defType=dismax&qf=title^100 note&bq=tags:abc OR tags:pqr