【问题标题】:How to search based on relevance in solr?如何根据solr中的相关性进行搜索?
【发布时间】:2014-06-24 11:40:22
【问题描述】:

我正在根据许多过滤器(例如内容名称、大小)查询 solr,但其中一个过滤器是相关性。我正在使用 SolrQuery API 向 solr 添加过滤器。

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

但我无法找到相关性的价值。

如何根据内容相关性进行搜索。有人可以帮忙吗?

【问题讨论】:

标签: solr


【解决方案1】:

搜索结果的相关性是在搜索过程中计算出来的,它取决于两件事:查询和搜索结果的内容。 计算相关性的确切公式称为 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

【讨论】:

    【解决方案2】:

    我能够使用 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-08
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      • 2015-09-20
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      相关资源
      最近更新 更多