言語解析
このセクションでは、文字セット変換関連のトークナイザとフィルタ、または特定の言語で使用するためのトークナイザとフィルタに関する情報を記載しています。
ヨーロッパの言語では、トークン化は比較的簡単です。トークンは空白文字と/または比較的少ない数の句読点文字によって区切られます。
その他の言語では、トークン化ルールはしばしばそれほど単純ではありません。一部のヨーロッパの言語でも、ドイツ語の複合語を分解するためのルールなど、特別なトークン化ルールが必要になる場合があります。
インデックス作成時の言語検出については、言語検出を参照してください。
KeywordMarkerFilterFactory
ステマーによる単語の変更を防ぎます。スキーマの「protected」属性を使用して、カスタマイズされた保護された単語リストを指定できます。保護された単語リスト内の単語は、Solr のステマーによって変更されません。
コメント付きの Solr `protwords.txt` のサンプルは、`sample_techproducts_configs` configset ディレクトリにあります。
名前付き
<fieldtype name="myfieldtype" class="solr.TextField">
<analyzer>
<tokenizer name="whitespace"/>
<filter name="keywordMarker" protected="protwords.txt" />
<filter name="porterStem" />
</analyzer>
</fieldtype>
クラス名付き(レガシー)
<fieldtype name="myfieldtype" class="solr.TextField">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt" />
<filter class="solr.PorterStemFilterFactory" />
</analyzer>
</fieldtype>
KeywordRepeatFilterFactory
各トークンを2回出力します。1つは `KEYWORD` 属性付き、もう1つはなしです。
ステマーの前に配置すると、ステミングされたものと同じ位置にステミングされていないトークンが保存されます。元の正確な用語に一致するクエリは、ステミングによる再現率のメリットを維持しながら、より高いスコアを取得します。元のトークンを保持するもう1つの利点は、ワイルドカードの切り詰めが期待どおりに機能することです。
設定するには、分析チェーンの先頭に `KeywordRepeatFilterFactory` を追加します。トークンがステミングされない場合の重複を避けるために、`RemoveDuplicatesTokenFilterFactory` も含めることをお勧めします。
フィールドタイプのサンプル設定は次のようになります。
名前付き
<fieldtype name="english_stem_preserve_original" class="solr.TextField">
<analyzer>
<tokenizer name="standard"/>
<filter name="keywordRepeat" />
<filter name="porterStem" />
<filter name="removeDuplicates" />
</analyzer>
</fieldtype>
クラス名付き(レガシー)
<fieldtype name="english_stem_preserve_original" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.KeywordRepeatFilterFactory" />
<filter class="solr.PorterStemFilterFactory" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
</fieldtype>
同じトークンを2回追加すると、スコアも2倍になります。そのため、ランキングルールを調整し直す必要がある場合があります。 |
StemmerOverrideFilterFactory
カスタムマッピングを適用し、これらの用語がステマーによって変更されないようにすることで、ステミングアルゴリズムをオーバーライドします。
タブ区切りファイル内の単語と語幹の対応付けをカスタマイズして、スキーマのdictionary
属性に指定することができます。この対応付け内の単語は、ファイルからの語幹に還元され、それ以降はどのステミング処理によっても変更されません。
名前付き
<fieldtype name="myfieldtype" class="solr.TextField">
<analyzer>
<tokenizer name="whitespace"/>
<filter name="stemmerOverride" dictionary="stemdict.txt" />
<filter name="porterStem" />
</analyzer>
</fieldtype>
クラス名付き(レガシー)
<fieldtype name="myfieldtype" class="solr.TextField">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StemmerOverrideFilterFactory" dictionary="stemdict.txt" />
<filter class="solr.PorterStemFilterFactory" />
</analyzer>
</fieldtype>
サンプルのstemdict.txt
ファイルは下記のとおりです。
# these must be tab-separated
monkeys monkey
otters otter
# some crazy ones that a stemmer would never do
dogs cat
ローカルにSolrのソースコードをチェックアウトしている場合は、Solrのテストリソースのsolr/core/src/test-files/solr/collection1/conf/stemdict.txt
にもこの例があります。
辞書複合語トークンフィルタ
このフィルタは、構成要素の単語の辞書を使用して、複合語を個々の単語に分割します(分解します)。各入力トークンは変更されずに渡されます。部分単語に分解できる場合、各部分単語も論理的に同じ位置にストリームに追加されます。
複合語は、ゲルマン語族の言語で最も一般的に見られます。
ファクトリクラス: solr.DictionaryCompoundWordTokenFilterFactory
引数
dictionary
-
必須
デフォルト: なし
シンプルな単語のリストを1行に1つずつ含むファイルのパス。空行と「#」で始まる行は無視されます。
詳細はリソースの読み込みを参照してください。
minWordSize
-
オプション
デフォルト:
5
これよりも短いトークンは分解されません。
minSubwordSize
-
オプション
デフォルト:
2
これよりも短い部分単語はトークンとして出力されません。
maxSubwordSize
-
オプション
デフォルト:
15
これよりも長い部分単語はトークンとして出力されません。
onlyLongestMatch
-
オプション
デフォルト:
true
true
の場合、最も長い一致する部分単語のみが新しいトークンを生成します。
例
germanwords.txt
に少なくとも次の単語が含まれていると仮定します: dumm kopf donau dampf schiff
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="dictionaryCompoundWord" dictionary="germanwords.txt"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.DictionaryCompoundWordTokenFilterFactory" dictionary="germanwords.txt"/>
</analyzer>
入力: "Donaudampfschiff dummkopf"
フィルタへのトークナイザ: "Donaudampfschiff"(1), "dummkopf"(2),
出力: "Donaudampfschiff"(1), "Donau"(1), "dampf"(1), "schiff"(1), "dummkopf"(2), "dumm"(2), "kopf"(2)
Unicode照合
Unicode照合は、言語に依存したテキストのソート方法であり、高度な検索にも使用できます。
SolrにおけるUnicode照合は高速です。すべての処理がインデックス作成時に実行されるためです。
<fieldtype … class="solr.TextField">
内でアナライザを指定する代わりに、solr.CollationField
およびsolr.ICUCollationField
フィールドタイプクラスがこの機能を提供します。solr.ICUCollationField
はICU4Jライブラリを基盤としており、より柔軟な設定が可能で、より多くのロケールに対応し、大幅に高速で、メモリとインデックス空間の使用量も少なくなります(キーがsolr.CollationField
を基盤とするJDK実装によって生成されるキーよりも小さいためです)。
solr.ICUCollationField
を使用するには、analysis-extrasモジュールを有効にする必要があります。
solr.ICUCollationField
およびsolr.CollationField
フィールドは、2つの方法で作成できます。
-
ロケールに関連付けられたシステムコレクターに基づいて。
-
調整された
RuleBasedCollator
ルールセットに基づいて。
ICUCollationField属性
システムコレクターの使用
locale
-
必須
デフォルト: なし
RFC 3066ロケールID。
strength
-
オプション
デフォルト: なし
有効な値は
primary
、secondary
、tertiary
、quaternary
、またはidentical
です。ICU照合の概念における比較レベルの詳細については、こちらを参照してください。 decomposition
-
オプション
デフォルト: なし
有効な値は
no
またはcanonical
です。ICU照合の概念における正規化の詳細については、こちらを参照してください。
調整されたルールセットの使用
custom
-
必須
デフォルト: なし
ICU
RuleBasedCollator
でサポートされているルールを含むUTF-8テキストファイルへのパス。 strength
-
オプション
デフォルト: なし
有効な値は
primary
、secondary
、tertiary
、quaternary
、またはidentical
です。ICU照合の概念における比較レベルの詳細については、こちらを参照してください。 decomposition
-
オプション
デフォルト: なし
有効な値は
no
またはcanonical
です。ICU照合の概念における正規化の詳細については、こちらを参照してください。
専門家向けオプション
alternate
-
オプション
デフォルト: なし
有効な値は
shifted
またはnon-ignorable
です。句読点または空白を無視するために使用できます。 caseLevel
-
オプション
デフォルト:
false
true
の場合、strength="primary"
と組み合わせて使用すると、アクセントは無視されますが、大文字と小文字は考慮されます。ICU照合の概念におけるcaseLevelの詳細については、こちらを参照してください。 caseFirst
-
オプション
デフォルト: なし
有効な値は
lower
またはupper
です。大文字と小文字が無視されない場合、どちらを先にソートするかを制御するために役立ちます。 numeric
-
オプション
デフォルト:
false
true
の場合、数字は数値に従ってソートされます(例: foobar-9はfoobar-10の前にソートされます)。 variableTop
-
オプション
デフォルト: なし
単一文字または短縮形。
alternate
に対して可変となるものを制御します。
特定の言語のテキストのソート
この例では、ICU4Jによって提供されるデフォルトのドイツ語ルールに従ってテキストがソートされます。
ロケールは通常、言語と国の組み合わせとして定義されますが、必要に応じて言語のみを指定することもできます。たとえば、言語として「de」を指定すると、ドイツ語でうまく機能するソートが得られます。言語として「de」を、国として「CH」を指定すると、スイス向けのドイツ語ソートが得られます。
<!-- Define a field type for German collation -->
<fieldType name="collatedGERMAN" class="solr.ICUCollationField"
locale="de"
strength="primary" />
...
<!-- Define a field to store the German collated manufacturer names. -->
<field name="manuGERMAN" type="collatedGERMAN" indexed="false" stored="false" docValues="true"/>
...
<!-- Copy the text to this field. We could create French, English, Spanish versions too,
and sort differently for different users! -->
<copyField source="manu" dest="manuGERMAN"/>
上記の例では、strengthを「primary」と定義しました。照合の強度はソート順序の厳密さを決定しますが、言語にも依存します。たとえば、英語では、「primary」の強度は大文字と小文字の違いとアクセントを無視します。
別の例
<fieldType name="polishCaseInsensitive" class="solr.ICUCollationField"
locale="pl_PL"
strength="secondary" />
...
<field name="city" type="text_general" indexed="true" stored="true"/>
...
<field name="city_sort" type="polishCaseInsensitive" indexed="true" stored="false"/>
...
<copyField source="city" dest="city_sort"/>
このタイプは、データにポーランド語のテキストが含まれているフィールドに使用されます。「secondary」の強度は大文字と小文字の違いを無視しますが、「primary」の強度とは異なり、ウムラウト付きの文字は、ウムラウトのない同じ基本文字とは異なる順序でソートされます。
"city_sort"フィールドを使用してソートする例
q=*:*&fl=city&sort=city_sort+asc
複数の言語のテキストのソート
複数の言語をサポートするには、2つのアプローチがあります。サポートする言語が少数の場合は、各言語ごとに照合されたフィールドを定義し、copyField
を使用することを検討してください。ただし、ソートフィールドを多数追加すると、ディスクとインデックス作成のコストが増加する可能性があります。別の方法としては、Unicodeのdefault
コレクターを使用する方法があります。
Unicodeのdefault
またはROOT
ロケールには、ほとんどの言語でうまく機能するように設計されたルールがあります。default
ロケールを使用するには、ロケールを空文字列として定義するだけです。このUnicodeデフォルトソートは、標準のSolrソートよりもはるかに高度です。
<fieldType name="collatedROOT" class="solr.ICUCollationField"
locale=""
strength="primary" />
カスタムルールによるテキストのソート
独自のソートルールセットを定義できます。目的のルールに似た既存のルールを取得してカスタマイズするのが最も簡単です。
以下の例では、ドイツ語のカスタムルールセットであるDIN 5007-2を作成します。このルールセットは、ドイツ語のウムラウトを異なる方法で扱います。öをoeと同等、äをaeと同等、üをueと同等と扱います。詳細は、ICU RuleBasedCollatorのJavadocを参照してください。
この例では、solr.ICUCollationField
のカスタムルールセットを作成し、それをファイルにダンプする方法を示しています。
// get the default rules for Germany
// these are called DIN 5007-1 sorting
RuleBasedCollator baseCollator = (RuleBasedCollator) Collator.getInstance(new ULocale("de", "DE"));
// define some tailorings, to make it DIN 5007-2 sorting.
// For example, this makes ö equivalent to oe
String DIN5007_2_tailorings =
"& ae , a\u0308 & AE , A\u0308"+
"& oe , o\u0308 & OE , O\u0308"+
"& ue , u\u0308 & UE , u\u0308";
// concatenate the default rules to the tailorings, and dump it to a String
RuleBasedCollator tailoredCollator = new RuleBasedCollator(baseCollator.getRules() + DIN5007_2_tailorings);
String tailoredRules = tailoredCollator.getRules();
// write these to a file, be sure to use UTF-8 encoding!!!
FileOutputStream os = new FileOutputStream(new File("/solr_home/conf/customRules.dat"));
IOUtils.write(tailoredRules, os, "UTF-8");
このルールセットは、Solrのカスタム照合に使用できるようになりました。
<fieldType name="collatedCUSTOM" class="solr.ICUCollationField"
custom="customRules.dat"
strength="primary" />
JDK照合
前述のように、ICU Unicode照合はいくつかの点でJDK照合よりも優れていますが、何らかの理由でICU4Jを使用できない場合は、solr.CollationField
を使用できます。
JDK照合の原理はICU照合と同じです。組み合わせたlocale
引数の代わりに、language
、country
、variant
引数を指定するだけです。
JDK照合属性
システムコレクターの使用(OracleがサポートするJavaのロケールのリストを参照)
language
-
必須
デフォルト: なし
ISO-639言語コード。
country
-
オプション
デフォルト: なし
ISO-3166国コード。
variant
-
オプション
デフォルト: なし
ベンダーまたはブラウザ固有のコード。
strength
-
オプション
デフォルト: なし
有効な値は
primary
、secondary
、tertiary
、またはidentical
です。Java CollatorのJavadocの詳細については、こちらを参照してください。 decomposition
-
オプション
デフォルト: なし
有効な値は
no
、canonical
、またはfull
です。Java CollatorのJavadocの詳細については、こちらを参照してください。
調整されたルールセットの使用:
custom
-
必須
デフォルト: なし
JDK RuleBasedCollator
でサポートされているルールを含むUTF-8テキストファイルへのパス。 strength
-
オプション
デフォルト: なし
有効な値は
primary
、secondary
、tertiary
、またはidentical
です。Java CollatorのJavadocの詳細については、こちらを参照してください。 decomposition
-
オプション
デフォルト: なし
有効な値は
no
、canonical
、またはfull
です。Java CollatorのJavadocの詳細については、こちらを参照してください。
solr.CollationField
の例<fieldType name="collatedGERMAN" class="solr.CollationField"
language="de"
country="DE"
strength="primary" /> <!-- ignore Umlauts and letter case when sorting -->
...
<field name="manuGERMAN" type="collatedGERMAN" indexed="false" stored="false" docValues="true" />
...
<copyField source="manu" dest="manuGERMAN"/>
ASCIIおよび10進数フォールディングフィルタ
ASCIIフォールディング
このフィルタは、最初の127個のASCII文字(「Basic Latin」Unicodeブロック)にないアルファベット、数字、記号のUnicode文字を、存在する場合、ASCII同等物に変換します。妥当なASCII代替文字を持つ文字のみが変換されます。
これにより、一致する数が多くなり、再現率が向上する可能性があります。一方、言語固有の文字の違いが失われるため、精度が低下する可能性があります。
ファクトリクラス: solr.ASCIIFoldingFilterFactory
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="asciiFolding"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
</analyzer>
入力: "Björn Ångström"
フィルタへのトークナイザ: "Björn", "Ångström"
出力: "Bjorn", "Angstrom"
10進数桁のフォールディング
このフィルタは、Unicodeの「10進数」一般カテゴリ(Nd
)の任意の文字を、同等のBasic Latin数字(0~9)に変換します。
これにより、一致する数が多くなり、再現率が向上する可能性があります。一方、言語固有の文字の違いが失われるため、精度が低下する可能性があります。
ファクトリクラス: solr.DecimalDigitFilterFactory
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="decimalDigit"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.DecimalDigitFilterFactory"/>
</analyzer>
OpenNLPの統合
Luceneモジュールlucene/analysis/opennlp
は、いくつかの分析コンポーネント(トークナイザ、品詞タグ付けフィルタ、フレーズチャンクフィルタ、そしてレマタイゼーションフィルタ)を介してOpenNLPの統合を提供します。これらの分析コンポーネントに加えて、Solrは、名前付きエンティティを抽出するための更新リクエストプロセッサも提供します。プラグインとしてロードできる更新プロセッサファクトリも参照してください。
OpenNLPトークナイザは、2つの理由から、他のすべてのOpenNLP分析コンポーネントとともに使用しなければなりません。第一に、OpenNLPトークナイザは、すべてのOpenNLPフィルタに必要な文の境界を検出し、マーク付けします。第二に、これらのフィルタで使用される事前トレーニング済みのOpenNLPモデルは、対応する言語固有の文検出/トークナイゼーションモデルを使用してトレーニングされたため、最適なパフォーマンスを得るには、実行時に同じモデルを使用して同じトークナイゼーションを使用する必要があります。 |
OpenNLPコンポーネントを使用するには、analysis-extrasモジュールを有効にする必要があります。
OpenNLPトークナイザ
OpenNLPトークナイザは、パラメータとして2つの言語固有のバイナリモデルファイル(文検出モデルとトークナイザモデル)を受け取ります。各文の最後のトークンにはフラグが付けられるため、後続のOpenNLPベースのフィルタは、この情報を使用して、文ごとにトークンに操作を適用できます。事前トレーニング済みモデルのダウンロードについては、OpenNLPのウェブサイトを参照してください。
ファクトリクラス: solr.OpenNLPTokenizerFactory
引数
例
名前付き
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.OpenNLPTokenizerFactory"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
</analyzer>
OpenNLP品詞フィルタ
このフィルタは、設定されたモデルによって割り当てられた品詞(POS)を各トークンのtype属性に設定します。事前トレーニング済みモデルのダウンロードに関する情報は、OpenNLPウェブサイトを参照してください。
Luceneは現在、トークンタイプをインデックスに登録しません。この情報を保持したい場合は、ペイロードまたはシノニムとして保持する必要があります。下記の例を参照してください。 |
ファクトリクラス: solr.OpenNLPPOSFilterFactory
引数
posTaggerModel
-
必須
デフォルト: なし
言語固有のOpenNLP品詞タグ付けモデルファイルのパス。詳細はリソースの読み込みを参照してください。
例
OpenNLPトークナイザーは句読点をトークン化しますが、これは後続のトークンフィルタに役立ちます。通常、句読点をインデックスに含める必要はありません。そのため、下記の例にはTypeTokenFilter
が含まれており、stop.pos.txt
には以下が含まれています。
#
$
''
``
,
-LRB-
-RRB-
:
.
各トークンの品詞をペイロードとしてインデックスに登録する
名前付き
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="typeAsPayload"/>
<filter name="type" types="stop.pos.txt"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.OpenNLPTokenizerFactory"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter class="solr.OpenNLPPOSFilterFactory" posTaggerModel="en-pos-maxent.bin"/>
<filter class="solr.TypeAsPayloadFilterFactory"/>
<filter class="solr.TypeTokenFilterFactory" types="stop.pos.txt"/>
</analyzer>
品詞の前に「@」を付けて、各トークンの品詞をシノニムとしてインデックスに登録する(TypeAsSynonymFilterの説明を参照)。
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="typeAsSynonym" prefix="@"/>
<filter name="type" types="stop.pos.txt"/>
</analyzer>
名詞のみをインデックスに登録する - keep.pos.txt
ファイルには、NN
、NNS
、NNP
、NNPS
という行が含まれています。
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="type" types="keep.pos.txt" useWhitelist="true"/>
</analyzer>
OpenNLP句読点チャンクフィルタ
このフィルタは、OpenNLP句読点チャンクモデルの出力に基づいて、各トークンのtype属性を設定します。チャンクラベルは、以前各トークンのtype属性にあった品詞タグを置き換えます。事前トレーニング済みモデルのダウンロードに関する情報は、OpenNLPウェブサイトを参照してください。
前提条件:OpenNLPトークナイザーとOpenNLP品詞フィルタがこのフィルタの前に配置されている必要があります。
Luceneは現在、トークンタイプをインデックスに登録しません。この情報を保持したい場合は、ペイロードまたはシノニムとして保持する必要があります。下記の例を参照してください。 |
ファクトリクラス: solr.OpenNLPChunkerFilterFactory
引数
chunkerModel
-
必須
デフォルト: なし
言語固有のOpenNLP句読点チャンクモデルファイルのパス。詳細はリソースの読み込みを参照してください。
例:
各トークンの句読点チャンクラベルをペイロードとしてインデックスに登録する
名前付き
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="openNLPChunker" chunkerModel="en-chunker.bin"/>
<filter name="typeAsPayload"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.OpenNLPTokenizerFactory"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter class="solr.OpenNLPPOSFilterFactory" posTaggerModel="en-pos-maxent.bin"/>
<filter class="solr.OpenNLPChunkerFilterFactory" chunkerModel="en-chunker.bin"/>
<filter class="solr.TypeAsPayloadFilterFactory"/>
</analyzer>
句読点チャンクラベルの前に「#」を付けて、各トークンの句読点チャンクラベルをシノニムとしてインデックスに登録する(TypeAsSynonymFilterの説明を参照)。
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="openNLPChunker" chunkerModel="en-chunker.bin"/>
<filter name="typeAsSynonym" prefix="#"/>
</analyzer>
OpenNLP Lemmatizerフィルタ
このフィルタは、各トークンのテキストをその語幹に置き換えます。辞書ベースの語幹化ツールとモデルベースの語幹化ツールの両方がサポートされています。両方が設定されている場合、最初に辞書ベースの語幹化ツールが試行され、次に、辞書外トークンに対してモデルベースの語幹化ツールが参照されます。事前トレーニング済みモデルのダウンロードに関する情報は、OpenNLPウェブサイトを参照してください。
ファクトリクラス: solr.OpenNLPLemmatizerFilter
引数
dictionary
またはlemmatizerModel
のいずれか、または両方を指定する必要があります。下記の例を参照してください。
例
辞書ベースの語幹化を実行し、辞書外トークンに対してモデルベースの語幹化にフォールバックする(句読点をインデックスに登録しないようにTypeTokenFilter
を使用する方法については、上記のOpenNLP品詞フィルタセクションを参照)。
名前付き
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="oenNLPLemmatizer"
dictionary="lemmas.txt"
lemmatizerModel="en-lemmatizer.bin"/>
<filter name="type" types="stop.pos.txt"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.OpenNLPTokenizerFactory"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter class="solr.OpenNLPPOSFilterFactory" posTaggerModel="en-pos-maxent.bin"/>
<filter class="solr.OpenNLPLemmatizerFilterFactory"
dictionary="lemmas.txt"
lemmatizerModel="en-lemmatizer.bin"/>
<filter class="solr.TypeTokenFilterFactory" types="stop.pos.txt"/>
</analyzer>
辞書ベースの語幹化のみを実行する
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="openNLPLemmatizer" dictionary="lemmas.txt"/>
<filter name="type" types="stop.pos.txt"/>
</analyzer>
モデルベースの語幹化のみを実行し、元のトークンを保持して語幹をシノニムとして出力する(KeywordRepeatFilterFactoryの説明を参照)。
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="keywordRepeat"/>
<filter name="openNLPLemmatizer" lemmatizerModel="en-lemmatizer.bin"/>
<filter name="removeDuplicates"/>
<filter name="type" types="stop.pos.txt"/>
</analyzer>
言語固有のファクトリ
これらのファクトリはそれぞれ、特定の言語で使用するために設計されています。ここで取り上げている言語は次のとおりです。
アラビア語
SolrはLight-10(PDF)ステミングアルゴリズムをサポートしており、Luceneには例としてストップワードリストが含まれています。
このアルゴリズムは、文字の正規化とステミングの両方を定義しているため、より柔軟性を高めるために、これらは2つのフィルタに分割されています。
ファクトリクラス: solr.ArabicStemFilterFactory
、solr.ArabicNormalizationFilterFactory
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="arabicNormalization"/>
<filter name="arabicStem"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ArabicNormalizationFilterFactory"/>
<filter class="solr.ArabicStemFilterFactory"/>
</analyzer>
ベンガル語
ベンガル語の処理用に特別に記述された2つのフィルタがあります。これらは、Luceneクラスorg.apache.lucene.analysis.bn.BengaliNormalizationFilter
とorg.apache.lucene.analysis.bn.BengaliStemFilter
を使用しています。
ファクトリクラス: solr.BengaliStemFilterFactory
、solr.BengaliNormalizationFilterFactory
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="bengaliNormalization"/>
<filter name="bengaliStem"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.BengaliNormalizationFilterFactory"/>
<filter class="solr.BengaliStemFilterFactory"/>
</analyzer>
正規化 - মানুষ
→ মানুস
ステミング - সমস্ত
→ সমস্
ブラジルポルトガル語
これは、ポルトガル語のブラジル方言のステミング用に特別に記述されたJavaフィルタです。Luceneクラスorg.apache.lucene.analysis.br.BrazilianStemmer
を使用しています。そのステマーは保護された単語(ステミングされない単語)のリストを使用するように設定できますが、このファクトリは、そのようなリストを指定する引数を受け入れません。
ファクトリクラス: solr.BrazilianStemFilterFactory
引数: なし
例
名前付き
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="brazilianStem"/>
</analyzer>
クラス名付き(レガシー)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.BrazilianStemFilterFactory"/>
</analyzer>
入力: "praia praias"
トークナイザーからフィルタへ: "praia", "praias"
出力: "pra", "pra"
ブルガリア語
Solrには、このアルゴリズム(PDF)に従った、ブルガリア語のライトステマーが含まれており、Luceneには例としてストップワードリストが含まれています。
ファクトリクラス: solr.BulgarianStemFilterFactory
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="bulgarianStem"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.BulgarianStemFilterFactory"/>
</analyzer>
カタルーニャ語
Solrは、language="Catalan"
という引数を使用して、Snowball Porter Stemmerでカタルーニャ語のステミングを行うことができます。Solrにはカタルーニャ語の縮約語のセットが含まれており、solr.ElisionFilterFactory
を使用して削除できます。
ファクトリクラス: solr.SnowballPorterFilterFactory
引数
language
:
+
必須 |
デフォルト: なし |
+ ステマー言語(この場合はCatalan
)。
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="elision"
articles="lang/contractions_ca.txt"/>
<filter class="solr.SnowballPorterFilterFactory" language="Catalan" />
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ElisionFilterFactory"
articles="lang/contractions_ca.txt"/>
<filter class="solr.SnowballPorterFilterFactory" language="Catalan" />
</analyzer>
入力: "llengües llengua"
トークナイザーからフィルタへ: "llengües"(1) "llengua"(2),
出力: "llengu"(1), "llengu"(2)
繁体字中国語
ICUトークナイザーのデフォルト設定は、繁体字中国語のテキストに適しています。これは、中国語以外のテキストについてはUnicodeテキストセグメンテーションアルゴリズムの単語区切り規則に従い、辞書を使用して中国語の単語をセグメント化します。
このトークナイザーを使用するには、analysis-extrasモジュールを有効にする必要があります。
標準トークナイザーも、繁体字中国語のテキストのトークン化に使用できます。Unicodeテキストセグメンテーションアルゴリズムの単語区切り規則に従って、中国語の文字ごとに1つのトークンを生成します。CJKバイグラムフィルタと組み合わせると、中国語の文字の重複するバイグラムが形成されます。
CJK幅フィルタは、全角ASCIIバリアントを同等の基本ラテン語形式に折りたたみます。
例
名前付き
<analyzer>
<tokenizer name="icu"/>
<filter name="cjkWidth"/>
<filter name="lowercase"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.ICUTokenizerFactory"/>
<filter class="solr.CJKWidthFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer>
<tokenizer name="standard"/>
<filter name="cjkBigram"/>
<filter name="cjkWidth"/>
<filter name="lowercase"/>
</analyzer>
CJKバイグラムフィルタ
標準トークナイザーまたはICUトークナイザーから生成されたCJK文字のバイグラム(重複する2文字のシーケンス)を形成します。
デフォルトでは、すべてのCJK文字がバイグラムを生成しますが、より詳細な制御を行うために、正書法の種類の引数han
、hiragana
、katakana
、hangul
を指定できます。false
に設定すると、対応する種類の文字はユニグラムとして渡され、バイグラムに含まれません。
CJK文字にバイグラムを形成する隣接する文字がない場合、ユニグラム形式で出力されます。常にユニグラムとバイグラムの両方を出力する場合は、outputUnigrams
引数をtrue
に設定します。
いずれの場合も、CJK以外の入力は変更されずに渡されます。
引数
han
-
オプション
デフォルト:
true
false
の場合、漢字はバイグラムを形成しません。 hiragana
-
オプション
デフォルト:
true
false
の場合、ひらがなはバイグラムを形成しません。 katakana
-
オプション
デフォルト:
true
false
の場合、カタカナはバイグラムを形成しません。 hangul
-
オプション
デフォルト:
true
false
の場合、ハングルはバイグラムを形成しません。 outputUnigrams
-
オプション
デフォルト:
false
true
の場合、バイグラムを形成することに加えて、すべての文字はユニグラムとしても渡されます。
繁体字中国語の例を参照してください。
簡体字中国語
簡体字中国語の場合、SolrはHMM中国語トークナイザーによる中国語の文章と単語のセグメンテーションをサポートしています。このコンポーネントには大規模な辞書が含まれており、隠れマルコフモデルを使用して中国語のテキストを単語にセグメント化します。このトークナイザーを使用するには、analysis-extrasモジュールを有効にする必要があります。
ICUトークナイザーのデフォルト設定も、簡体字中国語のテキストに適しています。これは、中国語以外のテキストについてはUnicodeテキストセグメンテーションアルゴリズムの単語区切り規則に従い、辞書を使用して中国語の単語をセグメント化します。このトークナイザーを使用するには、analysis-extrasモジュールを有効にする必要があります。
中国語分析にも役立ちます
CJK幅フィルタは、全角ASCIIバリアントを同等の基本ラテン語形式に折りたたみ、半角カタカナバリアントを同等の全角形式に折りたたみます。
例
名前付き
<analyzer>
<tokenizer name="hmmChinese"/>
<filter name="cjkWidth"/>
<filter name="stop"
words="org/apache/lucene/analysis/cn/smart/stopwords.txt"/>
<filter name="porterStem"/>
<filter name="lowercase"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.HMMChineseTokenizerFactory"/>
<filter class="solr.CJKWidthFilterFactory"/>
<filter class="solr.StopFilterFactory"
words="org/apache/lucene/analysis/cn/smart/stopwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer>
<tokenizer name="icu"/>
<filter name="cjkWidth"/>
<filter name="stop"
words="org/apache/lucene/analysis/cn/smart/stopwords.txt"/>
<filter name="lowercase"/>
</analyzer>
HMM中国語トークナイザー
簡体字中国語の場合、Solr は`analysis-extras` モジュール内の`solr.HMMChineseTokenizerFactory` を使用して、中国語の文章と単語の分割をサポートしています。このコンポーネントには大規模な辞書が含まれており、隠れマルコフモデルを使用して中国語のテキストを単語に分割します。このトークナイザーを使用するには、analysis-extras モジュールを有効にする必要があります。
ファクトリクラス: `solr.HMMChineseTokenizerFactory`
引数: なし
例
英語の単語に対して英語のPorterステマーにフォールバックするデフォルト設定を使用するには、以下を使用します。
<analyzer class="org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer"/>
または、独自の分析設定を構成するには、カスタムフィルター設定と共に`solr.HMMChineseTokenizerFactory` を使用します。これの例については、簡体字中国語 セクションを参照してください。
チェコ語
Solr には、このアルゴリズムに従ったチェコ語のライトステマーが含まれており、Lucene にはストップワードの例リストが含まれています。
ファクトリクラス: `solr.CzechStemFilterFactory`
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="czechStem"/>
<analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.CzechStemFilterFactory"/>
<analyzer>
入力: "prezidenští, prezidenta, prezidentského"
トークナイザーからフィルターへ: "prezidenští", "prezidenta", "prezidentského"
出力: "preziden", "preziden", "preziden"
デンマーク語
Solr は、`language="Danish"` の引数を使用して Snowball Porter ステマーでデンマーク語のステミングを行うことができます。
また、スカンジナビア語の正規化フィルターも関連しています。
ファクトリクラス: solr.SnowballPorterFilterFactory
引数
language
-
必須
デフォルト: なし
ステマー言語は、この場合は`Danish` です。
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="snowballPorter" language="Danish" />
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="Danish" />
</analyzer>
入力: "undersøg undersøgelse"
トークナイザーからフィルターへ: "undersøg"(1) "undersøgelse"(2),
出力: "undersøg"(1), "undersøg"(2)
オランダ語
Solr は、`language="Dutch"` の引数を使用して Snowball Porter ステマーでオランダ語のステミングを行うことができます。
ファクトリクラス: solr.SnowballPorterFilterFactory
引数
language
-
必須
デフォルト: なし
ステマー言語は、この場合は`Dutch` です。
例
名前付き
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="snowballPorter" language="Dutch"/>
</analyzer>
クラス名付き(レガシー)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="Dutch"/>
</analyzer>
入力: "kanaal kanalen"
トークナイザーからフィルターへ: "kanaal", "kanalen"
出力: "kanal", "kanal"
エストニア語
Solr は、`language="Estonian"` の引数を使用して Snowball Porter ステマーでエストニア語のステミングを行うことができます。
ファクトリクラス: solr.SnowballPorterFilterFactory
引数
language
-
必須
デフォルト: なし
ステマー言語は、この場合は`Estonian` です。
例
名前付き
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="snowballPorter" language="Estonian"/>
</analyzer>
クラス名付き(レガシー)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="Estonian"/>
</analyzer>
入力: "Taevani tõustes"
トークナイザーからフィルターへ: "Taevani", "tõustes"
出力: "taevani", "tõus"
フィンランド語
Solr はフィンランド語のステミングをサポートしており、Lucene にはストップワードの例リストが含まれています。
ファクトリクラス: `solr.FinnishLightStemFilterFactory`
引数: なし
例
名前付き
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="finnishLightStem"/>
</analyzer>
クラス名付き(レガシー)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.FinnishLightStemFilterFactory"/>
</analyzer>
入力: "kala kalat"
トークナイザーからフィルターへ: "kala", "kalat"
出力: "kala", "kala"
フランス語
省略フィルター
トークンストリームから冠詞の省略形を削除します。このフィルターは、フランス語、カタルーニャ語、イタリア語、アイルランド語などの言語に役立ちます。
ファクトリクラス: `solr.ElisionFilterFactory`
引数
articles
-
オプション
デフォルト: なし
削除する冠詞のリスト(1行に1つ)を含むファイルのパス名。冠詞とは、「le」のような、例えば *l’avion*(飛行機)のように一般的に略される単語です。このファイルには、アポストロフィの前にある略語(この場合は単に「*l*」)を含める必要があります。`articles` 属性が指定されていない場合は、フランス語の冠詞のデフォルトセットが使用されます。
ignoreCase
-
オプション
デフォルト:
false
`true` の場合、フィルターは一般的な単語ファイルと比較するときに単語の大文字と小文字を無視します。
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="elision"
ignoreCase="true"
articles="lang/contractions_fr.txt"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ElisionFilterFactory"
ignoreCase="true"
articles="lang/contractions_fr.txt"/>
</analyzer>
入力: "L’histoire d’art"
トークナイザーからフィルターへ: "L’histoire", "d’art"
出力: "histoire", "art"
フランス語ライトステムフィルター
Solr には、`solr.SnowballPorterFilterFactory` の1つ、`solr.FrenchLightStemFilterFactory` と呼ばれるより軽いステマー、`solr.FrenchMinimalStemFilterFactory` と呼ばれるさらにアグレッシブでないステマーの3つのフランス語ステマーが含まれています。Lucene にはストップワードの例リストが含まれています。
ファクトリクラス: `solr.FrenchLightStemFilterFactory`、`solr.FrenchMinimalStemFilterFactory`
引数: なし
例
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="elision"
articles="lang/contractions_fr.txt"/>
<filter name="frenchLightStem"/>
</analyzer>
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="elision"
articles="lang/contractions_fr.txt"/>
<filter name="frenchMinimalStem"/>
</analyzer>
入力: "le chat, les chats"
トークナイザーからフィルターへ: "le", "chat", "les", "chats"
出力: "le", "chat", "le", "chat"
ガリシア語
Solr には、このアルゴリズムに従ったガリシア語のステマーが含まれており、Lucene にはストップワードの例リストが含まれています。
ファクトリクラス: `solr.GalicianStemFilterFactory`
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="galicianStem"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.GalicianStemFilterFactory"/>
</analyzer>
入力: "felizmente Luzes"
トークナイザーからフィルターへ: "felizmente", "luzes"
出力: "feliz", "luz"
ドイツ語
Solr には、`solr.SnowballPorterFilterFactory language="German"` の1つ、`solr.GermanStemFilterFactory` と呼ばれるステマー、`solr.GermanLightStemFilterFactory` と呼ばれるより軽いステマー、`solr.GermanMinimalStemFilterFactory` と呼ばれるさらにアグレッシブでないステマーの4つのドイツ語ステマーが含まれています。Lucene にはストップワードの例リストが含まれています。
ファクトリクラス: `solr.GermanStemFilterFactory`、`solr.LightGermanStemFilterFactory`、`solr.MinimalGermanStemFilterFactory`
引数: なし
例
名前付き
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="germanStem"/>
</analyzer>
クラス名付き(レガシー)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.GermanStemFilterFactory"/>
</analyzer>
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="germanLightStem"/>
</analyzer>
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="germanMinimalStem"/>
</analyzer>
入力: "haus häuser"
トークナイザーからフィルターへ: "haus", "häuser"
出力: "haus", "haus"
ギリシャ語
このフィルターは、ギリシャ文字セットの大文字を対応する小文字に変換します。
ファクトリクラス: `solr.GreekLowerCaseFilterFactory`
引数: なし
Solr 3.1 以降、カスタム文字セットの使用はサポートされなくなりました。これらのエンコーディングでテキストをインデックスする必要がある場合は、入出力中に Java の文字セット変換機能(InputStreamReader など)を使用して、Lucene がこのテキストを Unicode として分析できるようにしてください。 |
例
名前付き
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="greekLowercase"/>
</analyzer>
クラス名付き(レガシー)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.GreekLowerCaseFilterFactory"/>
</analyzer>
ヒンディー語
Solr は、このアルゴリズム(PDF)に従ったヒンディー語のステミングのサポート、`solr.HindiNormalizationFilterFactory` を通じた一般的なスペル違いのサポート、このアルゴリズムに従った`solr.IndicNormalizationFilterFactory` を通じたエンコーディングの違いのサポートを提供しており、Lucene にはストップワードの例リストが含まれています。
ファクトリクラス: `solr.IndicNormalizationFilterFactory`、`solr.HindiNormalizationFilterFactory`、`solr.HindiStemFilterFactory`
引数: なし
例
名前付き
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="indicNormalization"/>
<filter name="hindiNormalization"/>
<filter name="hindiStem"/>
</analyzer>
クラス名付き(レガシー)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.IndicNormalizationFilterFactory"/>
<filter class="solr.HindiNormalizationFilterFactory"/>
<filter class="solr.HindiStemFilterFactory"/>
</analyzer>
インドネシア語
Solr は、このアルゴリズム(PDF)に従ったインドネシア語(Bahasa Indonesia)のステミングをサポートしており、Lucene にはストップワードの例リストが含まれています。
ファクトリクラス: `solr.IndonesianStemFilterFactory`
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="indonesianStem" stemDerivational="true" />
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.IndonesianStemFilterFactory" stemDerivational="true" />
</analyzer>
入力: "sebagai sebagainya"
トークナイザーからフィルターへ: "sebagai", "sebagainya"
出力: "bagai", "bagai"
イタリア語
Solr には、`solr.SnowballPorterFilterFactory language="Italian"` の1つ、`solr.ItalianLightStemFilterFactory` と呼ばれるより軽いステマーの2つのイタリア語ステマーが含まれています。Lucene にはストップワードの例リストが含まれています。
ファクトリクラス: `solr.ItalianStemFilterFactory`
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="elision"
articles="lang/contractions_it.txt"/>
<filter name="italianLightStem"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ElisionFilterFactory"
articles="lang/contractions_it.txt"/>
<filter class="solr.ItalianLightStemFilterFactory"/>
</analyzer>
入力: "propaga propagare propagamento"
トークナイザーからフィルターへ: "propaga", "propagare", "propagamento"
出力: "propag", "propag", "propag"
アイルランド語
Solr は、`language="Irish"` の引数を使用して Snowball Porter ステマーでアイルランド語のステミングを行うことができます。Solr には、アイルランド語特有の構造を処理できる`solr.IrishLowerCaseFilterFactory` が含まれています。Solr には、`solr.ElisionFilterFactory` を使用して削除できるアイルランド語の縮約語のセットも含まれています。
ファクトリクラス: solr.SnowballPorterFilterFactory
引数
language
-
必須
デフォルト: なし
ステマー言語は、この場合は`Irish` です。
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="elision"
articles="lang/contractions_ga.txt"/>
<filter name="irishLowercase"/>
<filter name="snowballPorter" language="Irish" />
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ElisionFilterFactory"
articles="lang/contractions_ga.txt"/>
<filter class="solr.IrishLowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="Irish" />
</analyzer>
入力: "siopadóireacht síceapatacha b’fhearr m’athair"
トークナイザーからフィルターへ: "siopadóireacht", "síceapatacha", "b’fhearr", "m’athair"
出力: "siopadóir", "síceapaite", "fearr", "athair"
日本語
Solr は、いくつかの分析コンポーネントを含む Lucene Kuromoji 形態素解析器を介して、日本語の分析をサポートしています。各コンポーネントの詳細については以下を参照してください。
-
JapaneseIterationMarkCharFilter
は、日本語の水平繰り返し記号(踊り字)を展開された形式に正規化します。 -
JapaneseTokenizer
は、形態素解析を使用して日本語をトークン化し、各用語に品詞、基本形(別名レマ)、読み、発音を注釈付けします。 -
JapaneseBaseFormFilter
は、元の用語を基本形(別名レマ)に置き換えます。 -
JapanesePartOfSpeechStopFilter
は、構成された品詞の1つを持つ用語を削除します。 -
JapaneseKatakanaStemFilter
は、長音記号(U+30FC)で終わる一般的なカタカナのスペルバリエーションを、長音記号を削除することで正規化します。
lucene-analyzers-common からの日本語分析にも役立ちます。
-
CJKWidthFilter
は、全角ASCIIバリアントを同等のBasic Latin形式に折りたたみ、半角カタカナバリアントを同等の全角形式に折りたたみます。
Japanese Iteration Mark CharFilter
日本語の水平繰り返し記号(踊り字)を展開された形式に正規化します。垂直繰り返し記号はサポートされていません。
ファクトリクラス: `JapaneseIterationMarkCharFilterFactory`
引数
normalizeKanji
-
オプション
デフォルト:
true
漢字の繰り返し記号を正規化しない場合は`false` に設定します。
normalizeKana
-
オプション
デフォルト:
true
かなの繰り返し記号を正規化しない場合は`false` に設定します。
Japanese Tokenizer
形態素解析を使用して日本語をトークン化し、各用語に品詞、基本形(別名レマ)、読み、発音を注釈付けするトークナイザー。
JapaneseTokenizer
には、検索に役立つセグメンテーションを行う`search` モード(デフォルト)があります。ヒューリスティックを使用して、複合語を構成要素に分割すると同時に、元の複合語を同義語として保持します。
ファクトリクラス: `solr.JapaneseTokenizerFactory`
引数
mode
-
オプション
デフォルト: なし
検索に役立つ名詞の分解効果を得るには`search` モードを使用します。`search` モードは、品詞の精度を犠牲にして、検索のためのセグメンテーションを改善します。`mode` の有効な値は次のとおりです。
-
`normal`: デフォルトのセグメンテーション
-
`search`: 検索に役立つセグメンテーション(追加の複合語分割)
-
`extended`: 検索モードと未知の単語のユニグラム化(実験的)
一部のアプリケーションでは、インデックス付けには`search` モードを使用し、クエリには`normal` モードを使用することで、精度を高め、複合語の一部が一致して強調表示されるのを防ぐことができます。
-
userDictionary
-
オプション
デフォルト: なし
ユーザー辞書のファイル名。これにより、重みを指定する必要なく、セグメンテーション、品詞タグ、読みに関する独自の項目を使用して統計モデルを上書きできます。サンプルのユーザー辞書ファイルについては、`lang/userdict_ja.txt` を参照してください。
userDictionaryEncoding
-
オプション
デフォルト: `UTF-8`
ユーザー辞書のエンコーディング。
discardPunctuation
-
オプション
デフォルト:
true
句読点を保持するには`false` に、破棄するには`true` に設定します。
discardCompoundToken
-
オプション
デフォルト: なし
`search` モードで元の複合トークンを保持するには`false` に、破棄するには`true` に設定します。
Japanese Base Form Filter
元の用語のテキストを対応する基本形(レマ)に置き換えます。(JapaneseTokenizer
は、各用語に基本形を注釈付けします。)
ファクトリクラス: `JapaneseBaseFormFilterFactory`
引数: なし
Japanese Part Of Speech Stop Filter
構成された品詞の1つを持つ用語を削除します。JapaneseTokenizer
は、用語に品詞を注釈付けします。
ファクトリクラス: `JapanesePartOfSpeechStopFilterFactory`
引数
tags
-
オプション
デフォルト: なし
用語を削除する品詞のリストのファイル名。例については、
sample_techproducts_config
の configset 内の`conf/lang/stoptags_ja.txt` を参照してください。
Japanese Katakana Stem Filter
長音記号(U+30FC)で終わる一般的なカタカナのスペルバリエーションを、長音記号を削除することで正規化します。
solr.CJKWidthFilterFactory
は、半角カタカナを全角に正規化するために、このフィルターの前に指定する必要があります。
ファクトリクラス: `JapaneseKatakanaStemFilterFactory`
引数
minimumLength
-
オプション
デフォルト: `4`
この長さ以下の用語はステミングされません。値は`2` 以上である必要があります。
CJK文字幅フィルタ
全角ASCII文字を対応する半角Basic Latin形式に変換し、半角カタカナ文字を対応する全角形式に変換します。
ファクトリクラス: CJKWidthFilterFactory
引数: なし
例
名前付き
<fieldType name="text_ja" positionIncrementGap="100" autoGeneratePhraseQueries="false">
<analyzer>
<!-- Uncomment if you need to handle iteration marks: -->
<!-- <charFilter name="japaneseIterationMark" /> -->
<tokenizer name="japanese" mode="search" userDictionary="lang/userdict_ja.txt"/>
<filter name="japaneseBaseForm"/>
<filter name="japanesePartOfSpeechStop" tags="lang/stoptags_ja.txt"/>
<filter name="cjkWidth"/>
<filter name="stop" ignoreCase="true" words="lang/stopwords_ja.txt"/>
<filter name="japaneseKatakanaStem" minimumLength="4"/>
<filter name="lowercase"/>
</analyzer>
</fieldType>
クラス名付き(レガシー)
<fieldType name="text_ja" positionIncrementGap="100" autoGeneratePhraseQueries="false">
<analyzer>
<!-- Uncomment if you need to handle iteration marks: -->
<!-- <charFilter class="solr.JapaneseIterationMarkCharFilterFactory" /> -->
<tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt"/>
<filter class="solr.JapaneseBaseFormFilterFactory"/>
<filter class="solr.JapanesePartOfSpeechStopFilterFactory" tags="lang/stoptags_ja.txt"/>
<filter class="solr.CJKWidthFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ja.txt"/>
<filter class="solr.JapaneseKatakanaStemFilterFactory" minimumLength="4"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
韓国語
韓国語(nori)アナライザは、Luceneのnori分析モジュールをSolrに統合します。韓国語テキストの形態素解析には、mecab-ko-dic辞書を使用します。
この辞書はMeCabを使用して構築されており、韓国語に合わせて調整されたフィーチャのフォーマットを定義しています。
noriには、ユーザー辞書機能もあり、重みを指定する必要なく、独自のセグメンテーション、品詞タグ、読みの項目を使用して統計モデルを上書きできます。
例:
名前付き
<fieldType name="text_ko" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer name="korean" decompoundMode="discard" outputUnknownUnigrams="false"/>
<filter name="koreanPartOfSpeechStop" />
<filter name="koreanReadingForm" />
<filter name="lowercase" />
</analyzer>
</fieldType>
クラス名付き(レガシー)
<fieldType name="text_ko" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.KoreanTokenizerFactory" decompoundMode="discard" outputUnknownUnigrams="false"/>
<filter class="solr.KoreanPartOfSpeechStopFilterFactory" />
<filter class="solr.KoreanReadingFormFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
韓国語トークナイザ
ファクトリクラス: solr.KoreanTokenizerFactory
SPI名: korean
引数:
userDictionary
-
オプション
デフォルト: なし
デフォルト辞書にカスタム名詞または複合語を追加するための、ユーザーが指定する辞書のパス。
userDictionaryEncoding
-
オプション
デフォルト: なし
ユーザー辞書の文字エンコーディング。
decompoundMode
-
オプション
デフォルト:
discard
複合トークンの処理方法を定義します。オプションは以下のとおりです。
-
none
: トークンの分解は行いません。 -
discard
: トークンを分解し、元の形式は破棄します。 -
mixed
: トークンを分解し、元の形式は保持します。
-
outputUnknownUnigrams
-
オプション
デフォルト:
false
true
の場合、未知の単語に対してユニグラムが出力されます。 discardPunctuation
-
オプション
デフォルト:
true
true
の場合、句読点が破棄されます。
ヘブライ語、ラオ語、ミャンマー語、クメール語
Luceneは、UAX#29単語区切りルールに加えて、ヘブライ語における二重引用符と単一引用符の使用、およびanalysis-extras
モジュールのsolr.ICUTokenizerFactory
によるラオ語、ミャンマー語、クメール語のシラブルへのセグメンテーションをサポートしています。このトークナイザを使用するには、analysis-extrasモジュールを有効にする必要があります。
ICUTokenizer を参照して詳細情報を確認してください。
ラトビア語
Solrはラトビア語のステミングをサポートしており、Luceneにはストップワードリストの例が含まれています。
ファクトリクラス: solr.LatvianStemFilterFactory
引数: なし
例
名前付き
<fieldType name="text_lvstem" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="latvianStem"/>
</analyzer>
</fieldType>
クラス名付き(レガシー)
<fieldType name="text_lvstem" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.LatvianStemFilterFactory"/>
</analyzer>
</fieldType>
入力: "tirgiem tirgus"
フィルタ対象トークナイザ: "tirgiem", "tirgus"
出力: "tirg", "tirg"
ノルウェー語
Solrには、ノルウェー語のステミングを行う2つのクラス、NorwegianLightStemFilterFactory
とNorwegianMinimalStemFilterFactory
が含まれています。Luceneにはストップワードリストの例が含まれています。
別のオプションとして、language="Norwegian"の引数を使用してSnowball Porter Stemmerを使用できます。
正規化には、スカンジナビア語の正規化フィルタのバリアントですが、ノルウェー語に合わせて調整された折り畳みルールを持つNorwegianNormalizationFilterFactory
があります。
ノルウェー語ライトステマー
NorwegianLightStemFilterFactory
は、-domと-hetの語尾に対して「2パス」ソートが必要です。つまり、最初のパスでは単語「kristendom」が「kristen」にステミングされ、その後、一般的なルールがすべて適用されるため、「krist」にさらにステミングされます。これにより、「kristen」、「kristendom」、「kristendommen」、「kristendommens」はすべて「krist」にステミングされます。
2番目のパスは、-domと-hetの語尾を取り上げます。この例を考えてみてください。
1パス | 2パス | ||
---|---|---|---|
前 |
後 |
前 |
後 |
forlegen |
forleg |
forlegen |
forleg |
forlegenhet |
forlegen |
forlegenhet |
forleg |
forlegenheten |
forlegen |
forlegenheten |
forleg |
forlegenhetens |
forlegen |
forlegenhetens |
forleg |
firkantet |
firkant |
firkantet |
firkant |
firkantethet |
firkantet |
firkantethet |
firkant |
firkantetheten |
firkantet |
firkantetheten |
firkant |
ファクトリクラス: solr.NorwegianLightStemFilterFactory
引数
variant
-
オプション
デフォルト:
nb
使用するノルウェー語のバリアント。有効な値は以下のとおりです。
-
nb:
ブークモール -
nn:
ニュノルスク -
no:
両方
-
例
名前付き
<fieldType name="text_no" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="stop" ignoreCase="true" words="lang/stopwords_no.txt" format="snowball"/>
<filter name="norwegianLightStem"/>
</analyzer>
</fieldType>
クラス名付き(レガシー)
<fieldType name="text_no" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_no.txt" format="snowball"/>
<filter class="solr.NorwegianLightStemFilterFactory"/>
</analyzer>
</fieldType>
入力: "Forelskelsen"
フィルタ対象トークナイザ: "forelskelsen"
出力: "forelske"
ノルウェー語ミニマルステマー
NorwegianMinimalStemFilterFactory
は、ノルウェー語名詞の複数形のみをステミングします。
ファクトリクラス: solr.NorwegianMinimalStemFilterFactory
引数
variant
-
オプション
デフォルト:
nb
使用するノルウェー語のバリアント。有効な値は以下のとおりです。
-
nb:
ブークモール -
nn:
ニュノルスク -
no:
両方
-
例
<fieldType name="text_no" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="stop" ignoreCase="true" words="lang/stopwords_no.txt" format="snowball"/>
<filter name="norwegianMinimalStem"/>
</analyzer>
</fieldType>
入力: "Bilens"
フィルタ対象トークナイザ: "bilens"
出力: "bil"
ノルウェー語正規化フィルタ
このフィルタは、交換可能なスカンジナビア文字æÆäÄöÖøØåÅと折り畳まれたバリアント(ae、oe、aa)をæÆøØåÅに変換することで、それらの使用を正規化します。これはScandinavianNormalizationFilter
のバリアントであり、ノルウェー語に合わせてカスタマイズされた折り畳みルールを使用しています。
ファクトリクラス: solr.NorwegianNormalizationFilterFactory
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="norwegianNormalization"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NorwegianNormalizationFilterFactory"/>
</analyzer>
入力: "blåbærsyltetøj blåbärsyltetöj blaabaarsyltetoej blabarsyltetoj"
フィルタ対象トークナイザ: "blåbærsyltetøy", "blåbärsyltetöy", "blaabaersyltetoey", "blabarsyltetoy"
出力: "blåbærsyltetøy", "blåbærsyltetøy", "blåbærsyltetøy", "blabarsyltetoy"
ペルシャ語
ペルシャ語フィルタファクトリ
Solrはペルシャ語の正規化をサポートしており、Luceneにはストップワードリストの例が含まれています。
ファクトリクラス: solr.PersianNormalizationFilterFactory
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="arabicNormalization"/>
<filter name="persianNormalization"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ArabicNormalizationFilterFactory"/>
<filter class="solr.PersianNormalizationFilterFactory"/>
</analyzer>
ポーランド語
Solrは、analysis-extras
モジュール内のsolr.StempelPolishStemFilterFactory
によるポーランド語のステミングと、solr.MorphologikFilterFactory
によるレマタイゼーションをサポートしています。solr.StempelPolishStemFilterFactory
コンポーネントには、ポーランド語のテーブルを含むアルゴリズムステマーが含まれています。このトークナイザを使用するには、analysis-extrasモジュールを有効にする必要があります。
ファクトリクラス: solr.StempelPolishStemFilterFactory
およびsolr.MorfologikFilterFactory
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="stempelPolishStem"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StempelPolishStemFilterFactory"/>
</analyzer>
<analyzer>
<tokenizer name="standard"/>
<filter name="morfologik" dictionary="morfologik/stemming/polish/polish.dict"/>
<filter name="lowercase"/>
</analyzer>
入力: ""studenta studenci"
フィルタ対象トークナイザ: "studenta", "studenci"
出力: "student", "student"
Stempelステマーの詳細については、LuceneのJavadocを参照してください。
小文字フィルタは、Morfologikステマーの*後*に適用されます。これは、ポーランド語の辞書に固有名詞が含まれており、固有名詞の大文字/小文字のケースが、曖昧さを解消する(または正しい語幹を検索する)ために重要になる可能性があるためです。
Morfologik辞書パラメータの値は、選択する辞書を指定する定数です。辞書リソースはpath/to/language.dict
という名前でなければならず、関連付けられた.info
メタデータファイルが必要です。詳細については、Morfologikプロジェクトを参照してください。辞書属性が指定されていない場合、ポーランド語辞書がデフォルトでロードされ使用されます。
ポルトガル語
Solrには、ポルトガル語のステマーが4つ含まれています。1つはsolr.SnowballPorterFilterFactory
、別のステマーはsolr.PortugueseStemFilterFactory
、さらに軽いステマーはsolr.PortugueseLightStemFilterFactory
、そしてさらに積極性が低いステマーはsolr.PortugueseMinimalStemFilterFactory
です。Luceneにはストップワードリストの例が含まれています。
ファクトリクラス: solr.PortugueseStemFilterFactory
、solr.PortugueseLightStemFilterFactory
、solr.PortugueseMinimalStemFilterFactory
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="portugueseStem"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PortugueseStemFilterFactory"/>
</analyzer>
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="portugueseLightStem"/>
</analyzer>
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="portugueseMinimalStem"/>
</analyzer>
入力: "praia praias"
トークナイザーからフィルタへ: "praia", "praias"
出力: "pra", "pra"
ルーマニア語
Solrは、language="Romanian"
の引数を使用してSnowball Porter Stemmerを使用してルーマニア語をステミングできます。
ファクトリクラス: solr.SnowballPorterFilterFactory
引数
language
-
必須
デフォルト: なし
ステマー言語(この場合は
Romanian
)。
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="wnowballPorter" language="Romanian" />
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="Romanian" />
</analyzer>
ロシア語
ロシア語ステムフィルタ
Solrには、ロシア語のステマーが2つ含まれています。1つはsolr.SnowballPorterFilterFactory language="Russian"
、もう1つは、より軽いステマーであるsolr.RussianLightStemFilterFactory
です。Luceneにはストップワードリストの例が含まれています。
ファクトリクラス: solr.RussianLightStemFilterFactory
引数: なし
例
名前付き
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="russianLightStem"/>
</analyzer>
クラス名付き(レガシー)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RussianLightStemFilterFactory"/>
</analyzer>
スカンジナビア語
スウェーデン語のå、ä、öは、実際にはノルウェー語とデンマーク語のå、æ、øと同じ文字であり、これらの言語間で使用される場合は交換可能です。ただし、これらの文字がないキーボードで入力する場合、折り畳み方が異なります。
そのような状況では、ほとんどのスウェーデン人がå、ä、öの代わりにa、a、oを使用します。一方、ノルウェー人とデンマーク人は、å、æ、øの代わりに通常aa、ae、oeを入力します。ただし、a、a、o、oo、aoを使用する場合や、上記のすべての置換を使用する場合もあります。
スカンジナビア語間の正規化に役立つ2つのフィルタがあります。1つは特殊文字(æäöå)を保持しようとするsolr.ScandinavianNormalizationFilterFactory
、もう1つはこれらをより広いø/ö → oなどに折り畳むsolr.ScandinavianFoldingFilterFactory
です。
他の関連するフィルタについては、各言語のセクションも参照してください。
スカンジナビア語正規化フィルタ
このフィルタは、交換可能なスカンジナビア文字æÆäÄöÖøØと折り畳まれたバリアント(aa、ao、ae、oe、oo)をåÅæÆøØに変換することで、それらの使用を正規化します。
これは、ScandinavianFoldingFilter
よりも意味的に破壊性の少ないソリューションであり、ノルウェー語またはデンマーク語キーボードを使用する人がスウェーデン語インデックスをクエリする場合などに最も役立ちます。このフィルタは、åとäをaに、öをoに折り畳む一般的なスウェーデン語の折り畳みは**行いません**。
ファクトリクラス: solr.ScandinavianNormalizationFilterFactory
引数: なし
例
入力: "blåbærsyltetøj blåbärsyltetöj blaabaarsyltetoej blabarsyltetoj"
フィルタ対象トークナイザ: "blåbærsyltetøj", "blåbärsyltetöj", "blaabaersyltetoej", "blabarsyltetoj"
出力: "blåbærsyltetøj", "blåbærsyltetøj", "blåbærsyltetøj", "blabarsyltetoj"
スカンジナビア語折り畳みフィルタ
このフィルタは、スカンジナビア文字åÅäæÄÆ → aとöÖøØ → oを折り畳みます。また、二重母音aa、ae、ao、oe、ooの使用を区別し、最初のものだけを残します。
これは、ScandinavianNormalizationFilter
よりも意味的に破壊性の高いソリューションですが、raksmorgasをräksmörgåsと照合する際に役立つ場合があります。
ファクトリクラス: solr.ScandinavianFoldingFilterFactory
引数: なし
例
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="scandinavianFolding"/>
</analyzer>
入力: "blåbærsyltetøj blåbärsyltetöj blaabaarsyltetoej blabarsyltetoj"
フィルタ対象トークナイザ: "blåbærsyltetøj", "blåbärsyltetöj", "blaabaersyltetoej", "blabarsyltetoj"
出力: "blabarsyltetoj", "blabarsyltetoj", "blabarsyltetoj", "blabarsyltetoj"
セルビア語
セルビア語正規化フィルタ
Solrには、セルビア語のキリル文字とラテン文字を正規化するフィルタが含まれています。このフィルタは、小文字の入力でのみ機能することに注意してください。
このフィルタの使用に関するユーザーのヒントとアドバイスについては、Solr Wikiのセルビア語サポートを参照してください。
ファクトリクラス: solr.SerbianNormalizationFilterFactory
引数
haircut
-
オプション
デフォルト:
bald
正規化の範囲を選択します。有効な値は以下のとおりです。
-
bald
: キリル文字は最初にラテン文字に変換されます。次に、ラテン文字のダイアクリティカルマークは削除されます。LATIN SMALL LETTER D WITH STROKE(U+0111)を除き、「dj
」に変換されます。 -
regular
: キリル文字からラテン文字への正規化のみが適用され、ラテン文字のダイアクリティカルマークは保持されます。
-
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="serbianNormalization" haircut="bald"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SerbianNormalizationFilterFactory" haircut="bald"/>
</analyzer>
スペイン語
Solrには、スペイン語用の2つのステマーが含まれています。1つはsolr.SnowballPorterFilterFactory language="Spanish"
にあり、もう1つはsolr.SpanishLightStemFilterFactory
と呼ばれる軽量なステマーです。Luceneには、ストップワードの例リストが含まれています。
ファクトリクラス: solr.SpanishStemFilterFactory
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="spanishLightStem"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SpanishLightStemFilterFactory"/>
</analyzer>
入力: "torear toreara torearlo"
トークナイザーからフィルタへ: "torear", "toreara", "torearlo"
出力: "tor", "tor", "tor"
スウェーデン語
スウェーデン語ステムフィルタ
Solrには、スウェーデン語用の2つのステマーが含まれています。1つはsolr.SnowballPorterFilterFactory language="Swedish"
にあり、もう1つはsolr.SwedishLightStemFilterFactory
と呼ばれる軽量なステマーです。Luceneには、ストップワードの例リストが含まれています。
また、スカンジナビア語の正規化フィルターも関連しています。
ファクトリクラス: solr.SwedishStemFilterFactory
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="swedishLightStem"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SwedishLightStemFilterFactory"/>
</analyzer>
入力: "kloke klokhet klokheten"
トークナイザーからフィルタへ: "kloke", "klokhet", "klokheten"
出力: "klok", "klok", "klok"
タイ語
このフィルタは、タイ文字のシーケンスを個々のタイ語の単語に変換します。ヨーロッパの言語とは異なり、タイ語では単語の区切りに空白を使用しません。
ファクトリクラス: solr.ThaiTokenizerFactory
引数: なし
例
名前付き
<analyzer type="index">
<tokenizer name="thai"/>
<filter name="lowercase"/>
</analyzer>
クラス名付き(レガシー)
<analyzer type="index">
<tokenizer class="solr.ThaiTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
トルコ語
Solrは、solr.SnowballPorterFilterFactory
によるトルコ語のステミング、solr.TurkishLowerCaseFilterFactory
による大文字と小文字を区別しない検索、solr.ApostropheFilterFactory
によるアポストロフィとそれに続く接尾辞の除去(Role of Apostrophes in Turkish Information Retrievalを参照)、solr.TruncateTokenFilterFactory
による構成可能な最大長でトークンを切り捨てるステミングの一種(Information Retrieval on Turkish Textsを参照)をサポートしています。また、Luceneには、ストップワードの例リストが含まれています。
ファクトリクラス: solr.TurkishLowerCaseFilterFactory
引数: なし
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="apostrophe"/>
<filter name="turkishLowercase"/>
<filter name="snowballPorter" language="Turkish"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ApostropheFilterFactory"/>
<filter class="solr.TurkishLowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="Turkish"/>
</analyzer>
ダイアクリティカルマークを区別しない検索を示す別の例
<analyzer>
<tokenizer name="standard"/>
<filter name="apostrophe"/>
<filter name="turkishLowercase"/>
<filter name="asciiFoldingFilterFactory" preserveOriginal="true"/>
<filter name="keywordRepeat"/>
<filter name="truncate" prefixLength="5"/>
<filter name="removeDuplicates"/>
</analyzer>
ウクライナ語
Solrは、analysis-extras
モジュール内のsolr.MorphologikFilterFactory
を使用して、ウクライナ語の語彙化をサポートしています。このフィルタを使用するには、analysis-extrasモジュールを有効にする必要があります。
Luceneには、lucene-analyzers-morfologik
jarファイル内に、ウクライナ語のストップワードの例リストも含まれています。
ファクトリクラス: solr.MorfologikFilterFactory
引数
dictionary
-
必須
デフォルト: なし
語彙化辞書のパス。
lucene-analyzers-morfologik
jarファイルには、org/apache/lucene/analysis/uk/ukrainian.dict
にウクライナ語の辞書が含まれています。
例
名前付き
<analyzer>
<tokenizer name="standard"/>
<filter name="stop" words="org/apache/lucene/analysis/uk/stopwords.txt"/>
<filter name="lowercase"/>
<filter name="morfologik" dictionary="org/apache/lucene/analysis/uk/ukrainian.dict"/>
</analyzer>
クラス名付き(レガシー)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="org/apache/lucene/analysis/uk/stopwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.MorfologikFilterFactory" dictionary="org/apache/lucene/analysis/uk/ukrainian.dict"/>
</analyzer>
Morfologikのdictionary
パラメータ値は、どの辞書を選択するかを指定する定数です。辞書リソースの名前はpath/to/language.dict
でなければならず、関連付けられた.info
メタデータファイルが必要です。Morfologikプロジェクトの詳細を参照してください。dictionary属性が指定されていない場合、ポーランド語の辞書がデフォルトでロードされて使用されます。
Analysis Extrasモジュール
上記でリストされている多くの言語機能は、analysis-extras
Solrモジュールによってサポートされています。使用前に有効にする必要があります。
必要な特定のjarファイルの詳細については、モジュールのREADMEを参照してください。