来自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
答案 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)
数字字段需要数字查询。尝试为你的领域提供一种非数字的东西。