2014-06-24 50 views
-1

我正在查詢基於一些過濾器,如內容名稱,大小的solr,但其中一個過濾器是相關的。我正在使用SolrQuery API將過濾器添加到solr。如何根據solr中的相關性進行搜索?

SolrQuery query = new SolrQuery(); 
query.set("q", mQueryString); 
query.addFilterQuery(Name); 

但我無法找到價值來提供相關性。

我如何根據內容相關性進行搜索?可以幫助任何人嗎?

+0

你是什麼意思「內容相關性」。默認情況下,lucene使用TFIDF相似度來評分文檔相關性:https://lucene.apache.org/core/4_0_0/core/org/apache/lucene/search/similarities/TFIDFSimilarity.html。如果你想要一種不同的分類方式,請在你的文章中說清楚 –

回答

0

我能夠使用SolrQuery基於相關性得分進行搜索。爲了獲得基於solr默認相關性順序排序的結果,我將'score'參數傳遞給solr查詢並且它工作正常。

SolrQuery solrQuery = new SolrQuery();  
solrQuery.setParam("q", keywords); 
solrQuery.setParam("q.op", "AND"); 
solrQuery.setParam("df", "text"); 
solrQuery.setParam("qt", "/select"); 
SolrQuery.SortClause sortClause = new SortClause("score", ORDER.desc); 
solrQuery.addSort(sortClause); 
0

搜索結果的相關性是在搜索過程中計算出來的,它取決於兩件事:查詢和搜索結果的內容。 計算相關性的確切公式被稱爲TF-IDF,在此處詳細解釋http://www.tfidf.com/

如果您願意,可以使Solr(標題,主題)中的不同字段的得分高於頁面,從而使查詢命中更相關。這就是所謂的現場助推,這裏解釋:https://wiki.apache.org/solr/SolrRelevancyFAQ#How_can_I_make_.22superman.22_in_the_title_field_score_higher_than_in_the_subject_field

相關問題