2014-06-24 52 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

相关问题