【问题标题】:How can I boost a result in SOLR based on a parameter?如何根据参数提升 SOLR 中的结果?
【发布时间】:2014-02-19 09:50:57
【问题描述】:

我是 SOLR 的新手,我正在尝试根据参数“国家/地区”来提升结果。

例如,我想将国家设置为 US 并将所有带有 US 的结果移到顶部。

这就是我现在的做法,但它不起作用。 :

sort=query({!qf=market v='US'}) desc

这是 dismax 请求处理程序的设置方式:

 <requestHandler name="dismax" class="solr.SearchHandler" >
    <lst name="defaults">
     <str name="defType">dismax</str>
     <str name="echoParams">explicit</str>
     <float name="tie">0.01</float>
     <str name="qf">
        text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
     </str>
     <str name="pf">
        text^0.2 features^1.1 name^1.5 manu^1.4 manu_exact^1.9
     </str>
     <str name="bf">
        popularity^0.5 recip(price,1,1000,1000)^0.3
     </str>
     <str name="fl">
        id,name,price,score
     </str>
     <str name="mm">
        2&lt;-1 5&lt;-2 6&lt;90%
     </str>
     <int name="ps">100</int>
     <str name="q.alt">*:*</str>
     <!-- example highlighter config, enable per-query with hl=true -->
     <str name="hl.fl">text features name</str>
     <!-- for this field, we want no fragmenting, just highlighting -->
     <str name="f.name.hl.fragsize">0</str>
     <!-- instructs Solr to return the field itself if no query terms are
          found -->
     <str name="f.name.hl.alternateField">name</str>
     <str name="f.text.hl.fragmenter">regex</str> <!-- defined below -->
    </lst>
  </requestHandler>

【问题讨论】:

    标签: apache search solr


    【解决方案1】:

    如果您使用 dismax/edismax 查询解析器,您可以按照 Karthik 建议的方式进行。

    但是,即使您使用标准查询解析器,您也可以查询q=market:US^2。这应该使您的结果在market:US 处具有更高的优先级。

    注意:“市场”是一个字段,“美国”是它的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      相关资源
      最近更新 更多