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>
したがって、私の質問は、これらのドキュメントのインデックスを作成するときに、末尾のスペースがすべて削除されるようにする方法です。