1

フランス語のコンテンツ用にsolrを構成します。検索は問題ありませんが、ファセット検索を有効にすると、単語が特別な方法で切り捨てられます。

すべてのeが消えます。たとえば、自動車の代わりにautomobil、montagneの代わりにmontagn、styleの代わりにstyl、homm=>hommeなどです。

<lst name="keywords">
    <int name="automobil">1</int>
    <int name="citroen">1</int>
    <int name="minist">0</int>
    <int name="polit">0</int>
    <int name="pric">0</int>
    <int name="shinawatr">0</int>
    <int name="thailand">0</int>
</lst

これがクエリq=fulltextfield:champpions&facet = true&facet.field=keywordsです。

キーワードコンテンツ:

<arr name="keywords">
    <str>Ski</str>
    <str>sport</str>
    <str>Free style</str>
    <str>automobile</str>
    <str>Rallye</str>
    <str>Citroen</str>
    <str>montagne</str>
</arr>

使用されるスキーマは次のとおりです。

<fieldtype name="text_fr" class="solr.TextField">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_fr.txt"/>
    <filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" />
    <filter class="solr.ISOLatin1AccentFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SnowballPorterFilterFactory" language="French"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_fr.txt"/>
    <filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />
    <filter class="solr.ISOLatin1AccentFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SnowballPorterFilterFactory" language="French"/>
  </analyzer>
</fieldtype>

フィールドdef:

誰かがその問題について考えを持っているなら....

ご回答有難うございます。ジェロームロンジェに関して

4

2 に答える 2

4

通常、フィールドをファセットとして使用する場合は、文字列として格納する必要があります。

トークン化およびフィルター処理されたフィールドでファセットしているため、個々の値はキーワード フィールドで処理された単語です。

于 2012-10-02T21:29:56.527 に答える
1

上記はすべて正しいです。1 つのファセットを 1 つ追加したいだけです。ファセット値は、格納されたものではなく、索引付けされた用語です。ファセットの推奨事項の 1 つは、文字列型を使用することです。多くの場合、これは適切な選択です。しかし、いくつかのことを自分の側面に合わせたいと思うこともあります。その場合、テキスト型を使用できますが、入力は軽く扱ってください。上記の Stemming (SnowballPorter) または WordDelimiter の選択は、どのような場合でも避けてください。

最初に KeywordTokenizerFactory を選択することをお勧めします。PatternReplace を使用して用語と入力をクリーンアップし、最後に TrimFilter を実行できます。ユーザーが用語を表示する場合は、小文字を使用しないでください。

例として、私の入力はアルファベットの言語コードです。PatternReplace はアルファベット以外の文字をクリーンアップし、2 番目は入力ミスを修正します。

`

  <analyzer>
     <tokenizer class="solr.KeywordTokenizerFactory" />
     <filter class="solr.LowerCaseFilterFactory" />
     <filter class="solr.PatternReplaceFilterFactory"
             pattern="([^a-z])" 
             replacement="" 
             replace="all" />
     <filter class="solr.PatternReplaceFilterFactory"
             pattern="fer|xxx"
             replacement="und"
             replace="all" />
     <filter class="solr.LengthFilterFactory" min="3" max="3" />
  </analyzer>

`

ソルを楽しもう

オリバー

于 2012-10-10T13:45:07.707 に答える