0

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>

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

4

3 に答える 3

4

Solr アナライザー/フィルターは、保存された値を変更しません。
インデックス値のみが変更されます。
したがって、TrimFilterFactoryは格納された値を変更せず、入力と同じ値を返します。

DIH を使用している場合は、Solr に渡す前にScriptTransformerをチェックして値を変更します。

于 2013-01-31T09:58:40.113 に答える
1

新しいバージョンの solr では、TrimFieldUpdateProcessorFactory

<updateRequestProcessorChain name="skip-empty" default="true">

   <processor class="TrimFieldUpdateProcessorFactory" />
   <processor class="RemoveBlankFieldUpdateProcessorFactory" /> 

   <processor class="solr.LogUpdateProcessorFactory" />
   <processor class="solr.RunUpdateProcessorFactory" />    
</updateRequestProcessorChain>
于 2016-02-16T17:06:19.987 に答える