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)