2015-06-24 4 views
0

Привет, я использую slorj api для запроса индексов solr. Но я получаю некоторое исключение, когда добавляю следующий запрос к объекту SolrQuery.SolrJ solr query for boolean params получение неопределенного исключения поля

Когда я запускаю следующий запрос в браузере он работает нормально http://localhost:8983/solr/hellosolr/select?q=fkey:book+OR+bookstore+AND+whword:what&fl=fanswer он работает нормально, но когда я запускаю тот же запрос с использованием SolrQuery я получаю следующее исключение

SolrQuery solrQuery = new SolrQuery(); 
solrQuery.set("q", "fkey:book+OR+bookstore+AND+whword:what"); 
solrQuery.set("fl", "fanswer"); 

Exception-

org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error from server at http://localhost:8983/solr/hellosolr: org.apache.solr.search.SyntaxError: Cannot parse 'fkey:book+OR+bookstore+AND+whword:what': Encountered " ":" ": "" at line 1, column 39. 
Was expecting one of: 
    <EOF> 
    <AND> ... 
    <OR> ... 
    <NOT> ... 
    "+" ... 

Пожалуйста, расскажите, как я могу написать выше html-запрос, используя SolrQuery java api.

ответ

0

Ваше сообщение об ошибке является синтаксической ошибкой. Выньте знаки +.

За исключением, попробуйте этот запрос вместо:

(fkey:book OR fkey:bookstore) AND whword:what

или вы можете написать это (обратите внимание на круглые скобки):

(fkey:book bookstore) AND whword:what

Если у вас есть или определяется как по умолчанию, тогда Solr вставляет его между книгой и книжным магазином для вас. В противном случае это сделает И. Я считаю, что OR является значением по умолчанию. Проверьте свой solrconfig.xml.

Если вы не указали поле перед поисковым запросом, Solr будет использовать поле по умолчанию (например, это text в моей версии). Если Solr не сможет его найти, вы получите сообщение об ошибке undefined field [name].

Почему ваш плохой запрос работает с панели администратора, я не знаю, но это должно решить вашу проблему SolrJ.

Предполагая, что вы используете /select обработчик, вы можете пойти в solrconfig.xml и изменить значение по умолчанию:

<requestHandler name="/select" class="solr.SearchHandler"> 
    <lst name="defaults"> 
    <str name="echoParams">explicit</str> 
    <int name="rows">10</int> 
    <str name="df">blah</str> 
</lst> 
+0

эта ошибка была решена, когда я установить анализатор запросов в SolrQuery объекта solrQuery.set («defType», "dismax"); Но у меня есть еще несколько запросов, я делаю poc для solr и для загрузки документа с использованием xml-файла i havent создал schema.xml и определенные поля в это. Нужно ли нам создавать schema.xml и определять поля для индексации данных в solr.? Пожалуйста, проверьте мой другой вопрос о добавлении полей http://stackoverflow.com/questions/30775018/how-to-add-new-fields-into-solr-schema – vashishth

Смежные вопросы