您好我正在使用slorj api来查询solr索引。但是当我向SolrQuery对象添加以下查询时,我得到了一些异常。
当我在浏览器中运行以下查询时,它工作正常 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");
异常 -
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> ...
"+" ...
请告诉我如何使用SolrQuery java api编写上面的html查询。
答案 0 :(得分:0)
您的错误消息是语法错误。取出+标志。
对于例外,请尝试此查询:
(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>