4

ファセット値のリストを作成するとき、スキーマにこれがあります。

<field name="contract_facet_sector_ids" type="text" indexed="true" stored="true" multiValued="true" required="false" />

保存したいファセットは、「1_1」、「2_43」、「2_99」などの文字列です。ただし、返されたデータのファセット カウントを表示すると、アンダースコアが削除されたようです。

[facet_fields] => Array
        (
            [contract_facet_sector_ids] => Array
                (
                    [11] => 0
                    [243] => 0
                    [299] => 0

誰かが私がここで間違っているところを手伝ってくれませんか? 「テキスト」フィールド タイプの定義は次のとおりです。

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory" />
        <filter class="solr.StopFilterFactory"
            ignoreCase="true" words="stopwords.txt"
            enablePositionIncrements="true" />
        <filter class="solr.WordDelimiterFilterFactory" 
            generateWordParts="1" generateNumberParts="1" 
            catenateWords="1" catenateNumbers="1" 
            catenateAll="0" splitOnCaseChange="1" />
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" />
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory" />
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
        <filter class="solr.StopFilterFactory"
            ignoreCase="true" words="stopwords.txt"
            enablePositionIncrements="true" />
        <filter class="solr.WordDelimiterFilterFactory" 
            generateWordParts="1" generateNumberParts="1" 
            catenateWords="0" catenateNumbers="0" 
            catenateAll="0" splitOnCaseChange="1" />
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" />
    </analyzer>
</fieldType>

よろしくお願いします!

セブ

4

2 に答える 2

3

WordDelimiterFilterFactoryが原因でアンダースコアが削除されています。以下に基づいています。

単語をサブワードに分割し、サブワード グループに対してオプションの変換を実行します。デフォルトでは、単語は次の規則に従ってサブワードに分割されます。

単語内の区切り記号 (英数字以外のすべての文字) で分割します。「Wi-Fi」→「Wi」、「Fi」

...

このフィールドの使用方法の説明に基づいて、「保存したいファセットは文字列です...」 . string追加のアナライザーを適用する必要が本当にない限り、以下で定義されているように (Solr の例から) fieldType を使用することをお勧めします。

<!-- The StrField type is not analyzed, but indexed/stored verbatim. -->
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
于 2012-01-10T16:12:18.390 に答える
1

Solr の分析ページには、さまざまなステップでテキストがどのように分析されるかが表示されます

于 2012-01-10T15:53:27.283 に答える