带有布尔参数的solr搜索查询

solr search query with boolean parameter

以下是我索引到solr中的文档:

    <doc>
        <field name="definition">Bookshelf are to keep books. </field>
        <field name="whword">what</field>
        <field name="definitionKey">bookshelf</field>
    </doc>

现在我需要查询这个文档。但我的要求是检查 definitionkeywhword 值是否相等。以下是查询:

http://localhost:8983/solr/faqcore/select?q=definitionKey:bookself&whword=null&wt=json

现在在这个查询中,whword 的值为空,这不等于文档中的值。在这种情况下,结果应该为空,但我仍然在输出中将整个文档显示为 json。

请提供您的建议。

首先,您不能将 whword=null 添加为请求参数,它必须是查询 (q) 或过滤器查询 (fq) 的一部分。

然后,Solr 不知道 null 值。您必须在查询或过滤器查询中指定 "negative" 条件。获取不为空 whword 的文档的条件是 whword:[* TO *](注意大写 TO!),因此以下任何一个都应该有效(我在每个末尾跳过 &wt=json变体):

  1. q=definitionKey:bookshelf+-whword:[*+TO+*]
  2. q=definitionKey:bookshelf+AND+NOT+whword:[*+TO+*]
  3. q=definitionKey:bookshelf&fq=-whword:[*+TO+*]