Java SolrJ查询,Join查询

Java SolrJ查询,Join查询,java,search,solr,solrj,Java,Search,Solr,Solrj,我目前正在solr上工作,要在其中创建联接,我需要编写 http://localhost:8983/solr/select?q=category_name:cat1%20_query_:"{!dismax%20qf=category_name%20v=cat2}" 其中cat1和cat2是我希望我的产品所在的类别,即所有具有这两个类别的产品 通过使用这个,我得到了准确的结果,因为我可以找到如何使用solrjapi在Java中编写相同的代码 我在干什么 String myQuery = "";

我目前正在solr上工作,要在其中创建联接,我需要编写

http://localhost:8983/solr/select?q=category_name:cat1%20_query_:"{!dismax%20qf=category_name%20v=cat2}"
其中cat1和cat2是我希望我的产品所在的类别,即所有具有这两个类别的产品

通过使用这个,我得到了准确的结果,因为我可以找到如何使用solrjapi在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页

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);
更好,但仍然不起作用,添加了我不想要的“&”,因为输出是错误的 这是去solr处理的wat 这里的结果仅基于“cat1”,而不是两者的和

q=category_name:cat1&_query_={!dismax%26qf%3Dcategory_name%26v%3Dcat2}
第三,尝试了最新答案中建议的wat page,惨败 这是去solr处理的wat 这是一个类似于OR运算符的操作,而不是AND

q=category_name:cat1+_query_:"{!dismax+qf%3Dcategory_name+v%3Dcat2}"
PS:我需要找到如何编写我的查询的解决方案,请帮助,坚持到底

终于解决了,, 嵌套+=”和查询:\“{!dismax qf=category_name v=“; 这是我问题的解决办法

现在查询得到处理!! 感谢阅读后,您的问题似乎与传递已编码的值有关,因为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是否如预期的那样有效,并相应地进行调整以获得所需的结果


更新:修改以使查询选项成为一个和比较。

谢谢Paige,我很快意识到我的错误,我已经浏览了solrJ wiki页面,但是我错过了这个,我的错,你的解决方案的问题是你的解决方案在url中设置了一个参数“&”,然后我的查询发生了变化,所以如果我不想&“如果你能告诉我,那就太好了。我相信我刚刚更新了我的答案,以更好地反映这个问题。请让我知道这对你是否有效。请查看我的编辑,抱歉,但问题仍然相关,请帮助先生,检查它是否有效链接,然后将其显式设置为and
nested+=”和{u query:\”{!dismax qf=category_name v=“;
我只想发布u,是的,我尝试了同样的方法,并且成功了,非常感谢Paige,感谢你的时间和努力