text_de
Solr 5.4 を使用しており、次の schema.xmlで定義されたテキスト フィールドがいくつかあります。
<fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" words="lang/stopwords_de.txt" format="snowball" ignoreCase="true"/>
<filter class="solr.GermanNormalizationFilterFactory"/>
<filter class="solr.GermanLightStemFilterFactory"/>
</analyzer>
</fieldType>
これはデフォルト設定です。name:Rosewein
を検索しても結果がないのに、name:Roséwein
関連するエントリが返されるのはなぜだろうか。name
そこで、いくつかの特別な文字と有効なオプションを使用してフィールドをクエリしようとしましdebugQuery
た。その結果、次のようになります。
{
"responseHeader": {
"status": 0,
"QTime": 0,
"params": {
"debugQuery": "true",
"indent": "true",
"q": "name:ÁÀÂÄÃåĀĂÆæöüßéèêíóú",
"_": "1459935371889",
"wt": "json"
}
},
"response": {
"numFound": 0,
"start": 0,
"docs": []
},
"debug": {
"rawquerystring": "name:ÁÀÂÄÃåĀĂÆæöüßéèêíóú",
"querystring": "name:ÁÀÂÄÃåĀĂÆæöüßéèêíóú",
"parsedquery": "name:aaaaãåāăææousséèêiou",
"parsedquery_toString": "name:aaaaãåāăææousséèêiou",
"explain": {},
"QParser": "LuceneQParser",
...
parsedquery
すべてのバリアントがASCII表現に置き換えられているわけではないことを示すフィールドを見てください。ASCIIFoldingFilterFactory
ドイツ語のウムラウトが失われる可能性があるため、フィルターとして使用できません。場合によっては、からなどに変換さü
れるue
ためです。
しかし、私が理解できないのは、なぜにíóúá
変換され、どのように保持されioua
ないのですか?é
é
そして、これらすべての特別なボーカルをASCII表現に変換する方法はありますが、ウムラウトに変換することはできae Ae ue Ue
ますか? (Solr を再コンパイルする必要なし)