2

商品を説明するタグを含む「facet_tag」フィールドがあります。タグはドイツ語であるため、ASCII 以外の文字 (ウムラウトなど) が含まれている場合があります。可能な値は次のとおりです。


Zelte」
「Tunnelzelte」「Äxte」「Sägen」
「Softshells

ここで、次のようなクエリを使用してファセットの solr をクエリするとします。

http://<solr_host>:<solr_port>/solr/select?q=*&facet=on&facet.field=facet_tag&facet.sort=index

ソート結果は次のようになります。

<lst name="facet_counts">
    <lst name="facet_queries"/>
    <lst name="facet_fields">
        <lst name="facet_tag">
            <int name="Softshells">1</int>
            <int name="Sägen">1</int>
            <int name="Tunnelzelte">1</int>
            <int name="Zelte">1</int>
            <int name="Äxte">2</int>
        </lst>
    </lst>
    <lst name="facet_dates"/>
    <lst name="facet_ranges"/>
</lst>

タグ「Äxte」が最初の項目で、その後に「Sägen」が続く必要があります。明らかに、この場合、Solr は非 ASCII 文字を適切に処理しません (ファセット検索のドキュメントにも記載されています。 http://wiki.apache.org/solr/SimpleFacetParameters#facet.sortを参照してください) 。

ウムラウトを正規化せずにSolrにこれらの値を適切にソートさせる方法はありますか(ユーザーに値を表示するため)?

4

1 に答える 1

2

私は使用しますASCIIFoldingFilterFactory

最初の 127 文字の ASCII 文字 ("Basic Latin" Unicode ブロック) に含まれていないアルファベット、数字、および記号の Unicode 文字を、対応する ASCII 文字が存在する場合は変換します。

このようにして、インデックスが正規化されます (たとえば、Äxte は Axte としてインデックスが作成されます) が、格納される内容は変更されません。そのため、予想される並べ替えを取得する必要がありますが、表示されるコンテンツは元のもののままです (たとえば、Äxte)。

更新
インデックス付きの値を使用するため、ソリューションはファセットには適用されません。を使用するASCIIFoldingFilterFactoryと正しい並べ替えができますが、正規化された文字も出力として表示されます。基本的に、並べ替えは正しいが出力が間違っているか、並べ替えが間違っているが出力は正しい可能性があります。残念ながら、私は他の解決策を知りません。

于 2012-06-28T13:00:44.617 に答える