带有布尔参数的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>
现在我需要查询这个文档。但我的要求是检查 definitionkey
和 whword
值是否相等。以下是查询:
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
变体):
q=definitionKey:bookshelf+-whword:[*+TO+*]
q=definitionKey:bookshelf+AND+NOT+whword:[*+TO+*]
q=definitionKey:bookshelf&fq=-whword:[*+TO+*]
以下是我索引到solr中的文档:
<doc>
<field name="definition">Bookshelf are to keep books. </field>
<field name="whword">what</field>
<field name="definitionKey">bookshelf</field>
</doc>
现在我需要查询这个文档。但我的要求是检查 definitionkey
和 whword
值是否相等。以下是查询:
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
变体):
q=definitionKey:bookshelf+-whword:[*+TO+*]
q=definitionKey:bookshelf+AND+NOT+whword:[*+TO+*]
q=definitionKey:bookshelf&fq=-whword:[*+TO+*]