我正在使用 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");
任何帮助将非常感激。