SolrJ solr查询布尔参数获取未定义的字段异常

时间:2015-06-24 13:07:59

标签: solr solrj solr4

您好我正在使用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查询。

1 个答案:

答案 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>