【问题标题】:Solr: Using a Filter Query on a boolean field?Solr:在布尔字段上使用过滤器查询?
【发布时间】:2013-03-22 18:31:57
【问题描述】:

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

<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

【问题讨论】:

  • 您是否检查过以确保为索引中的每个项目正确填充了is_instrumental 字段?
  • 据我所知,是的 - 当我进行正常查询时,我会在结果中看到类似 false(或 true)的内容。跨度>
  • 你在布尔字段中输入了什么数据??

标签: solr


【解决方案1】:

您的查询语法没有任何问题,&amp;fq=is_instrumental:true 应该可以工作。

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

【讨论】:

  • 据我所知,我认为我没有这样做。它主要基于 Solr 4.1 的默认(教程)配置文件,我通过管理界面运行查询,没有检查 dismax 或任何其他选项。我编辑了我的问题以包括我的 solrconfig.xml 和 schema.xml。
  • 好的。我在配置文件中没有看到任何看起来不合适的东西。您是否尝试过清除索引并重新加载数据?
  • 呃...我有,但只是为了确保我再次删除所有内容,重新启动 Solr,然后重新导入,现在它可以按预期工作。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多