嗨,我正在使用一个slorj api来查询solr索引。但当我将以下查询添加到SolrQuery对象时,我遇到了一些异常。
当我在浏览器中运行以下查询时,它运行良好http://localhost:8983/solr/hellosolr/select?q=fkey:book+OR+书店+AND+whword:what&fl=风扇它运行得很好,但当我使用SolrQuery运行相同的查询时,我得到了以下异常
SolrQuery solrQuery = new SolrQuery();
solrQuery.set("q", "fkey:book+OR+bookstore+AND+whword:what");
solrQuery.set("fl", "fanswer");
异常-
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> ...
"+" ...
请告诉我如何使用SolrQueryjavaapi编写上面的html查询。
您的错误消息是语法错误。去掉+符号。
对于异常,请尝试以下查询:
(fkey:book OR fkey:bookstore) AND whword:what
或者你可以这样写(注意括号):
(fkey:book bookstore) AND whword:what
若您将OR定义为默认值,那个么Solr将为您在图书和书店之间插入它。否则,它将执行AND。我认为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>