text_general
フィールドの言語ごとに異なるトークナイザー/アナライザーを使用できることがわかりました。
しかし、存在するtext_en
こともあります。
なぜ2つ必要なのですか?
アジア言語の文があり、その文にいくつかの英語の単語が含まれているとします。
text_general
は文中のアジア語とtext_en
英語の単語に使用されますか?
solr はどのようにそのような文をインデックス/クエリしますか?
text_en はステミングを使用するため、 を検索すると、などとfakes
一致します。ステミングされていないフィールドでは のみと一致します。fake
fake's
faking
fakes
fakes
各フィールドは、アナライザーの異なる「チェーン」を使用します。text_en は、英語をより適切にインデックス化する一連のフィルターを使用します。tokenizer
およびのfilter
エントリを参照してください。
text_general のスキーマの抜粋:
<!-- A general text field that has reasonable, generic
cross-language defaults: it tokenizes with StandardTokenizer,
removes stop words from case-insensitive "stopwords.txt"
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
<filter class="solr.LowerCaseFilterFactory"/>
text_en のスキーマの抜粋:
<!-- A text field with defaults appropriate for English: it
tokenizes with StandardTokenizer, removes English stop words
(lang/stopwords_en.txt), down cases, protects words from protwords.txt, and
finally applies Porter's stemming. The query time analyzer
also applies synonyms from synonyms.txt. -->
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<tokenizer class="solr.StandardTokenizerFactory"/>
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="lang/stopwords_en.txt"
enablePositionIncrements="true"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
Why do we need two?
さまざまなコンテンツを異なる方法で分析できるようにします。または、必要に応じて、同じコンテンツを ( copyFieldを使用して) 別の方法で分析することもできます。これにより、照会するフィールドについて、照会時により多くの選択肢が提供されます。
text_general is used for the asian words in the sentence and text_en for english words?
いいえ、データベースと同じように、各フィールドには 1 つのみを含めることができfieldType
ます。
同じフィールド内で異なる言語に対して異なる分析を行いたい場合は、例としてSmartChineseAnalyzerを参照してください。
http://docs.lucidworks.com/display/LWEUG/Multilingual+Indexing+and+Searchも参照してください。