簡體   English   中英

SolrJ查詢,加入查詢

[英]SolrJ Query, Join Query

我目前正在研究solr,在其中創建一個連接,我需要寫

http://localhost:8983/solr/select?q=category_name:cat1%20_query_:"{!dismax%20qf=category_name%20v=cat2}"

其中cat1和cat2是我想要我的產品的類別,即所有那些具有這兩個類別的產品。

我正在使用這個獲得准確的結果,我可以找到如何使用SolrJ api在Java中編寫相同的結果

我在做什么

String myQuery = "";
myQuery += "category_name:";
myQuery += categoryNames.get(0);
myQuery += "%20_query_:\"{!dismax%20qf=category_name%20v=";
myQuery += categoryNames.get(1);
myQuery += "}\"";
query.setQuery(myQuery);

這不會給soln,solr給出錯誤

現在按照第1頁第1頁

SolrQuery query = new SolrQuery();
query.setQuery("category_name:" + categoryNames.get(0));
String join = "";
join += "{!dismax&qf=category_name&v=";
join += categoryNames.get(1);
join += "}";
query.setParam("_query_", join);
QueryResponse response = solr.query(query);

更好,但仍然無法工作,追加“&”,我不想要從那時起輸出是錯誤的這是wat去solr處理這里結果只來自“cat1”,而不是兩者的AND

q=category_name:cat1&_query_={!dismax%26qf%3Dcategory_name%26v%3Dcat2}

3,嘗試了最新答案中建議的wat頁面,慘不忍睹這是對於處理器進行solr處理這樣的工作就像一個OR運算符而不是AND

q=category_name:cat1+_query_:"{!dismax+qf%3Dcategory_name+v%3Dcat2}"

PS:我需要找到關於如何編寫myQuery的解決方案,請幫忙,堅持下去

它終於解決了,嵌套+ =“AND 查詢 :\\”{!dismax qf = category_name v =“;是我問題的解決方案

現在查詢得到處理!! 謝謝

在Solr中讀取嵌套查詢后看起來您的問題與傳遞已編碼的值有關,因為SolrJ將為您編碼它們,並且您可能會在問題中使用您的方法進行雙重編碼。

這是一個沒有編碼應該工作的修改版本:

SolrQuery query = new SolrQuery();   
String nested = "";
nested += "category_name:";
nested += categoryNames.get(0);
nested += " AND _query_:\"{!dismax qf=category_name v=";
nested += categoryNames.get(1);
nested += "}\"";
query.setQuery(nested);
QueryResponse response = solr.query(query);

您可能需要查看您的jetty或tomcat日志,以查看實際上發送給Solr的URL,如果這不能按預期工作並相應調整以獲得所需的結果。

更新:已修改以使查詢選項成為AND比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM