我正在使用 Solr 的DataImportHandler来索引数据库中的某些数据。但是,数据库表方案使用CHAR
-fields,因此它们具有固定的宽度并有一些尾随空格。
我正在尝试使用solr.TrimFilterFactory
. 在我的 Solrschema.xml
中,我使用以下字段类型来索引数据:
<fieldType name="string" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.TrimFilterFactory" updateOffsets="true" />
</analyzer>
</fieldType>
所以现在我要添加一个文档,例如:
<add>
<doc>
<field name="test">Test </field>
</doc>
</add>
而且我期望测试字段中的尾随空格被删除,但是当我查询: 时test:Test*
,我得到:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
</lst>
<result name="response" numFound="1" start="0">
<doc>
<str name="test">Test </str>
</doc>
</result>
</response>
如您所见,尾随空格没有被删除。我一定是做错了什么或误解了过滤器的概念。但我的期望是查询会返回:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
</lst>
<result name="response" numFound="1" start="0">
<doc>
<str name="test">Test</str>
</doc>
</result>
</response>
所以我的问题是如何确保在索引这些文档时,所有尾随空格都被删除。