2015-10-15 77 views
0

我使用solrj api從solr中獲取結果。根據最符合的條件來排列結果Criteria-solr

我的查詢是這樣的:

solrQuery.addFilterQuery("connection:(${user.uniqueKey()}) OR followers: 
    (${user.uniqueKey()}) OR company:(${currentCompanies})") 

我想要的結果,其中第一個遇到的最大標準(從連接,追隨者,公司)

也就是說,如果它落入連接和追隨者和公司的任何結果那麼結果應該先落在連接的結果之前,追隨者纔會先結果。

+0

請記住,FilterQueries不會影響分數。然而,實際查詢中的術語會這樣做,因此匹配更多術語的查詢排名要高於匹配更少的查詢。 – MatsLindh

回答

0

你實際上可能是關閉不使用過濾器的查詢更好,所以你可以做這樣的事情:

(yourField1:value1 OR yourField2:value2 OR yourField3:value3) OR (yourField1:value1 AND yourField2:value2 AND yourField3:value3)^100.0

你需要用它打了一下,以獲得正確的價值觀。

您在這裏做的是告訴Solr在AND搜索中對較高的文檔進行評分,但仍然返回符合OR搜索的結果。

+0

其實我總共有6場。所以會有多少組合? – rahul

+0

@rahul你的組合取決於你想要完成的事情。您應該可以將其餘的字段添加到OR子查詢和AND子查詢中,而不會出現問題,前提是您要對所有這些字段進行OR搜索和AND搜索。 – TMBT