【问题标题】:SolrJ solr query for boolean params getting undefined field exceptionSolrJ solr 查询布尔参数获取未定义字段异常
【发布时间】:2015-06-24 13:07:58
【问题描述】:

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

【问题讨论】:

    标签: solr solrj solr4


    【解决方案1】:

    您的错误消息是语法错误。去掉 + 号。

    对于例外情况,请尝试以下查询:

    (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>
    

    【讨论】:

    • 当我在 SolrQuery 对象中设置查询解析器时解决了这个错误 solrQuery.set("defType","dismax");但是我有更多的查询,我在 solr 上做一些 poc 并使用 xml 文件上传文档,我没有创建 schema.xml 并在其中定义字段。我们是否有必要创建 schema.xml 并定义字段以将数据索引到 solr.中?请检查我关于添加字段的另一个问题stackoverflow.com/questions/30775018/…
    猜你喜欢
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 2015-10-16
    相关资源
    最近更新 更多