SolrJ Query, Join Query - PullRequest
       19

SolrJ Query, Join Query

4 голосов
/ 09 сентября 2011

Я сейчас работаю над solr, в котором для создания объединения мне нужно написать

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

где cat1 и cat2 - категории, в которых я хочу, чтобы мой продукт был, т.е. все те продукты, которые имеют эти 2 категории.

Я получаю точные результаты, используя это, поскольку я могу найти, как написать то же самое на Java, используя SolrJ api

Ват я делал

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-й странице и 1013 *

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 для обработки здесь результаты приходят только на основе «cat1», а не AND обоих

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

3-ий, попробовал ват страницу, предложенную в последнем ответе, с треском проваливается это Ват идет в Solr для обработки здесь работает как оператор OR вместо AND

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

PS: мне нужно было найти решение относительно того, как написать myQuery , пожалуйста, помогите, застрял на нем

Это окончательно решено, nested + = "AND query : \" {! dismax qf = category_name v = "; это решение моей проблемы

теперь запрос обрабатывается !! Спасибо

1 Ответ

4 голосов
/ 09 сентября 2011

После прочтения Вложенных запросов в 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);

Вам, вероятно, понадобится просмотреть журналы вашего мола или томата, чтобы увидеть, какой URL действительно отправляется.Решить, если это не работает должным образом, и настроить соответствующим образом, чтобы получить желаемые результаты.

Обновление: Изменено, чтобы опция query была сравнением AND.

...