4

我有一个索引的存储布尔字段,我试图将其用作过滤器:

<field name="is_instrumental" type="boolean" indexed="true" stored="true" />

但是,当我尝试将其用作 fq 参数时,查询返回零结果:

select?q=*:*&fq=is_instrumental:true&wt=xml&indent=true

<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">0</int>
    <lst name="params">
      <str name="indent">true</str>
      <str name="q">*:*</str>
      <str name="wt">xml</str>
      <str name="fq">is_instrumental:true</str>
    </lst>
  </lst>
  <result name="response" numFound="0" start="0"></result>
</response>

我已经尝试了所有我能想到的组合(真、假、1、0、真、假,也在引号中),无论我尝试什么,它都不会返回任何东西。其他字段(整数或字符串)的过滤器工作得很好。使用 Solr 4.1。

我错过了什么?

编辑:

solrconfig.xml: http: //pastebin.com/kGWhQBma

schema.xml: http: //pastebin.com/uqnYuuHR

4

1 回答 1

2

&fq=is_instrumental:true您的查询语法应该没有问题。

我的猜测是您正在使用自定义版本的 /select 请求处理程序,该处理程序正在实现自定义查询解析器,例如eDisMax(扩展 Dismax)解析器。也许该&uf参数已设置为防止现场搜索。您可以检查您的 solrconfig.xml 并查看<requestHandler name="/select" class="solr.SearchHandler">配置的默认值是如何定义的吗?

于 2013-04-01T18:26:25.967 回答