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



嗨,我正在使用一个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>

最新更新