为什么我不能在Solr中搜索“0”字段?

时间:2010-09-28 16:18:41

标签: lucene solr

来自schema.xml:

<field name="myfield" type="integer" indexed="true" stored="false"/>

id为5的记录的myfield值为0,我通过搜索普通id:5并查看objectXml来确认。

搜索id:5 AND myfield:0不会返回任何记录。

但是,搜索id:5 AND -myfield:1会返回我期待的记录。

为什么?

- 其他信息:

整数类型的定义: <fieldType name="integer" class="solr.IntField" omitNorms="true"/>

Solr版本:1.4

4 个答案:

答案 0 :(得分:1)

绑定到“整数”字段类型的类是什么?是否将0视为未编制索引的标记?

该文档的索引数据在管理员中是什么样的?

答案 1 :(得分:0)

我尝试了你的情况,假设你使用标准字段类型为int:

<fieldtype name="integer" class="solr.TrieIntField" ... />

工作正常。所以我想integer的字段类型定义在某种程度上是错误的。检查这个定义。

答案 2 :(得分:0)

我已经解决了这个问题。这是应用程序核心(第三方CMS)中的一个错误,与Solr无关。

问题在于供应商的代码在索引之前验证索引的值是否为false。不幸的是,他们这样做是这样的:

$value = strval($node);
if ($value)

当然,0的计算结果为false,即使它是字符串“0”。

我把它改为:

$value = strval($node);
if ($value !== false)

......现在它有效。

感谢您的努力,对不起,问题最终成为完全无关的问题。

答案 3 :(得分:-1)

数字字段需要数字查询。尝试为你的领域提供一种非数字的东西。