我正在使用solrj API查詢我的SOLR 3.6索引。我有多個文本字段,我想以不同的方式加權。從我讀過的內容中,我應該可以使用dismax或edismax查詢類型來完成此操作。我試過以下內容:使用Solrj在SOLR中增強字段
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");
任何幫助將不勝感激。
你也可以使用'query.setQueryType(「搜索「)'而不是'query.set(」qt「,」search「)'。 – javanna 2012-04-26 08:18:07
謝謝Jayendra。我試着按照你的建議創建一個新的請求處理程序,但代碼似乎總是使用現有的請求處理程序(示例配置文件中的默認「/ select」)。通過修改現有的請求處理程序,我能夠得到這個工作。但這意味着我無法在查詢類型之間進行選擇。 – Joe 2012-04-27 21:07:15
啊,終於得到了這份工作。上面的解決方案或多或少是正確的。在深入源代碼之後,我意識到我需要將requestHandler的名稱設置爲「/ search」和query.set(「qt」,「/ search」)。 QueryRequest顯式查找「/」,否則默認使用「/ select」。 – Joe 2012-04-27 23:30:25