SolrJ Query - PullRequest
       10

SolrJ Query

4 голосов
/ 27 апреля 2009

Привет всем,

Мне нужно запросить несколько значений по индексу (так же, как запрос SQL IN (id1, id2, id3)) используя SolrJ, другими словами, я хочу получить документы, чье поле соответствует набору значений.

Поскольку solrj api грубо задокументирован, я ожидаю, что кто-то может мне помочь

Привет

Ответы [ 4 ]

6 голосов
/ 27 апреля 2009

Вы можете сделать что-то вроде:

SolrQuery solrQuery = new SolrQuery().setQuery("myField:id1 OR myField:id2 OR myField:id3");
QueryResponse rsp = server.query(solrQuery);

или

SolrQuery solrQuery = new SolrQuery().setQuery("myField:(id1 OR id2 OR id3)");
QueryResponse rsp = server.query(solrQuery);
0 голосов
/ 09 августа 2017

Добрый день,

Это можно сделать двумя способами

1- Используя ИЛИ в качестве разделителя между значениями, мы можем использовать StringUtils, чтобы упростить проверку ниже

Set<String> pdfFamilies = new HashSet<String>();
String familyIdsString = StringUtils.join(pdfFamilies , 'OR');
solrQuery = new SolrQuery("FAM_ID: ( " + familyIdsString + " )");

2-Использование ПРОБЕЛ в качестве разделителя между значениями, проверьте ниже

Set<String> pdfFamilies = new HashSet<String>();
String familyIdsString = StringUtils.join(pdfFamilies , ' ');
solrQuery = new SolrQuery("FAM_ID: ( " + familyIdsString + " )");
0 голосов
/ 28 марта 2016

Я пробовал, и в Solr 5 этот, кажется, работает хорошо:

String mQueryString="term:business OR term:\"information security\"";
SolrQuery query = new SolrQuery();
query.setQuery(mQueryString);
0 голосов
/ 14 апреля 2011

В файле определения схемы conf / schema.xml вы можете указать оператор по умолчанию, убедитесь, что это ИЛИ:

<solrQueryParser defaultOperator="OR"/>

Тогда вы можете разделить слова по пробелам в запросе, и это приведет к ИЛИ слов:

solrQuery.setQuery("myField:(id1 id2 id3)")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...