2012-06-08 48 views
1

我有我的架構某些領域如下:Solr的得分

HOTEL_NAME:一些酒店名稱

城市:一些城市

county_code:DE

街道:一些街頭。

我的查詢找到一些酒店看起來像這樣。

select/fq=city:"Berlin"&fq=country_code"DE"&fq=hotel_name:"achat berlin hotel"=city:"Berlin"&fq=country_code"DE"&fq=hotel_name:"achat berlin hotel" 

返回值,cotains大量與一些或更多令牌HOTEL_NAME場machted找到酒店。如果我想簡短地說明這些文檔中每個在hotel_name文件中匹配的令牌的編號,我該怎麼做。我想保留頂部hotel_name字段中的最大匹配令牌數。

E.G.如果酒店名稱包含所有三個代幣:achat,berlin和hotel,它應該出現在頂部。下面的匹配應該出現在下面。

是否有可能根據每個字段匹配的標記數量對文檔進行評分。

回答

0

schema.xml中字段「hotel_name」的類型是什麼?

另外,你有沒有試過它?默認情況下,Solr考慮了協調因子:

「如果查詢中有多個詞,匹配的詞越多,分數越高」。所以,我猜這已經發生在你的情況中了。

+0

它不會自動發生。有時我會收到較少比賽的文件,然後再進行更多比賽。 hotel_name的類型是: –

2

那麼,首先,您的查詢形式很糟糕。您需要使用?開始查詢,提供q參數,在country_code字段名稱和值之間提供:,並且不需要重複fq參數。它應該是:

?q=*:*&fq=city:"Berlin"&fq=country_code:"DE"&fq=hotel_name:"achat berlin hotel" 

hotel_namecountry_code,並且city這些fq參數將根據您的schema.xml被符號化和分析,可以精確匹配或不依賴於你在solrconfig.xml指定的查詢斜率。

是否有可能根據匹配每個字段的 令牌的數量對文檔進行評分。

solr中的得分不是這個字面意思,所以沒有,不完全是。

E.G.如果酒店名稱包含所有三個代幣:achat,berlin和hotel,它應該出現在頂部。下面的匹配應該出現在下面。

您所提供的查詢作爲一個詞組(它引述" S),所以Solr的將默認搜索準確短語,給它一個相關聯得分。如果在您的solrconfig.xml中配置query slopqs參數),則還會添加馬虎查詢中的分數。你可能真正想要的是:

hotel_name:achat berlin hotel 

這是一個非短語查詢。