0

とのカスタムトークナイザー用に WordDelimiterFilterFactory を構成しましたが&-これは正常に機能しています。

また、いくつかのトークナイザー ( など. _ :) では、境界のみで分割する必要があります。単語の間にある場合は分割しないでください。

例えば

test.com (should tokenized to test.com)
newyear. coming (should tokenized to newyear and coming)
new_car (should tokenized to new_car)
..
..

Solr.WordDelimiterFilterFactoryタイプがLOWERUPPERALPHADIGITALPHANUMで使用できることを確認しましたSUBWORD_DELIM。各タイプの使用に関する説明はありません。名前が示すように、タイプ SUBWORD_DELIM が私のニーズを満たすかもしれないと思いましたが、うまくいかないようです。

以下はテキストフィールドの定義です

<fieldType name="text_general_preserved" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false" />
         <filter class="solr.WordDelimiterFilterFactory"
                splitOnCaseChange ="0"
                splitOnNumerics ="0"
                stemEnglishPossessive ="0"
                generateWordParts="1"
                generateNumberParts="1"
                catenateWords="0"
                catenateNumbers="0"
                catenateAll="0"
                preserveOriginal="0"
                protected="protwords_general.txt"
                types="wdfftypes_general.txt"
                />

        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false" />
        <filter class="solr.WordDelimiterFilterFactory"
                splitOnCaseChange ="0"
                splitOnNumerics ="0"
                stemEnglishPossessive ="0"
                generateWordParts="1"
                generateNumberParts="1"
                catenateWords="0"
                catenateNumbers="0"
                catenateAll="0"
                preserveOriginal="0"
                protected="protwords_general.txt"
                types="wdfftypes_general.txt"
                />
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>

以下はwdfftypes_general.txtの内容です

& => ALPHA
- => ALPHA
_ => SUBWORD_DELIM
: => SUBWORD_DELIM
. => SUBWORD_DELIM

Solr.WordDelimiterFilterFactory私の要件を満たすために構成を設定する方法を教えてください。

ありがとう。

4

1 に答える 1

0

WordDelimiterFilterFactoryのドキュメントに基づくと、wdfftypes.txt ファイルの SUBOWRD_DELIM 設定は、splitOnCaseChange および splitOnNumerics 設定に基づく動作にのみ影響します。したがって、: _ .wdfftypes.txt ファイルに ALPHA エントリとして追加し、fieldType の WordDelimiterFilterFactory の後に新しいPatternReplaceCharFilterFactoryを追加して、トークンから先頭または末尾の文字を削除します。

于 2013-04-24T13:24:31.103 に答える