gpt4 book ai didi

search - 使用 Solrj 增强 SOLR 中的字段

转载 作者:行者123 更新时间:2023-12-02 04:45:39 24 4
gpt4 key购买 nike

我正在使用 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 );

但这行不通。我尝试了以下变体来设置查询类型,但似乎没有什么区别。

query.setQueryType("dismax");
query.set("qt","dismax");
query.set("type","edismax");
query.set("qt","edismax");
query.set("type","dismax");

我想保留完整的 Lucene 查询语法,因此我更喜欢 ExtendedDisMax 而不是 DisMax。增强查询中的单个术语(如下所示)确实有效,但不是有效的解决方案,因为查询是自动生成的,并且语法可能变得任意复杂。

query.setQuery( "title:apples^10.0 oranges^10.0 content:apples oranges");

任何帮助将不胜感激。

最佳答案

最好的方法是在 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>

并使用 qt 参数来定义请求处理程序 -

query.set("qt","search");

您只需更改 solr config xml 配置并重新加载核心即可微调 boost 配置。

关于search - 使用 Solrj 增强 SOLR 中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10324969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com