【问题标题】:Solr GermanNormalizationFilter and special charsSolr GermanNormalizationFilter 和特殊字符
【发布时间】:2016-04-06 09:44:18
【问题描述】:

我们使用 Solr 5.4 并将一些文本字段定义为 text_de,并带有以下 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)

【问题讨论】:

标签: solr solr5


【解决方案1】:

如果您正在寻找自定义字符映射规则,您可以使用MappingCharFilterFactory,它需要一个包含规则的配置文件。 Techproducts example schema 展示它(已注释掉,所以在第一次修改后退出)。检查mapping-FoldToASCII.txtmapping-ISOLatin1Accent.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-22
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多