【发布时间】:2011-01-06 04:43:34
【问题描述】:
我有一个字段在 Solr 的 schema.xml 中被索引为字符串,它来自 mysql 数据库中的 boolean(tinyint) 列。
在查询中,我使用 1 对该字段进行搜索。但如果没有任何更改,此查询无法返回正确的结果。在我使用 true 而不是 1 之后,它再次起作用。现在它又出错了,但为真,1 没问题。
这里的确切问题是什么?我需要将 schema.yml 中的字段类型更改为整数吗?
提前谢谢你。
【问题讨论】:
我有一个字段在 Solr 的 schema.xml 中被索引为字符串,它来自 mysql 数据库中的 boolean(tinyint) 列。
在查询中,我使用 1 对该字段进行搜索。但如果没有任何更改,此查询无法返回正确的结果。在我使用 true 而不是 1 之后,它再次起作用。现在它又出错了,但为真,1 没问题。
这里的确切问题是什么?我需要将 schema.yml 中的字段类型更改为整数吗?
提前谢谢你。
【问题讨论】:
因为它是一个字符串字段,我们不可能知道你是如何索引它的。它可能是“真”/“假”或“1”/“0”或“开”/“关”等。或者甚至是这些的混合,也许你有一些带有“真”的文件和一些带有“1”的文件”。
如果它在语义上是布尔字段,我建议使用布尔字段类型,例如:
<field name="inStock" type="boolean" indexed="true" stored="true" />
为此,您需要声明布尔字段类型(它在默认模式中声明):
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/>
请记住在此更改后重建索引。
【讨论】: