Joe*_*Joe 2 lucene search solr solrj
我正在使用solrj API来查询我的SOLR 3.6索引.我有多个文本字段,我想以不同的方式加权.根据我的阅读,我应该可以使用dismax或edismax查询类型来完成此操作.我尝试过以下方法:
SolrQuery query = new SolrQuery();
query.setQuery( "title:apples oranges content:apples oranges");
query.setQueryType("edismax");
query.set("qf", "title^10.0 content^1.0");
QueryResponse rsp = m_Server.query( query );
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我尝试了以下变体来设置查询类型,但它似乎没有什么区别.
query.setQueryType("dismax");
query.set("qt","dismax");
query.set("type","edismax");
query.set("qt","edismax");
query.set("type","dismax");
Run Code Online (Sandbox Code Playgroud)
我想保留完整的Lucene查询语法,所以我更喜欢ExtendedDisMax到DisMax.在查询中提升单个术语(如下所示)确实有效,但不是有效的解决方案,因为查询是自动生成的,并且语法可以任意复杂.
query.setQuery( "title:apples^10.0 oranges^10.0 content:apples oranges");
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激.
最好的方法是在solrconfig.xml中定义请求处理程序,如 -
<requestHandler name="search" class="solr.SearchHandler" default="true">
<lst name="defaults">
<str name="echoParams">explicit</str>
<str name="defType">dismax</str>
<str name="qf">
title^1 content^0.8
</str>
<str name="q.alt">*:*</str>
<str name="rows">10</str>
<str name="fl">*,score</str>
</lst>
</requestHandler>
Run Code Online (Sandbox Code Playgroud)
并使用qt参数来定义请求处理程序 -
query.set("qt","search");
Run Code Online (Sandbox Code Playgroud)
您可以通过更改solr config xml配置并重新加载核心来微调boost配置.
归档时间: |
|
查看次数: |
6777 次 |
最近记录: |