elasticsearch:尽管有法国分析仪,但仍有重点搜索问题

时间:2017-02-14 12:41:54

标签: elasticsearch

当我进行没有重音的搜索时,尽管我在映射中设置了法语分析器,但我没有与具有重音的相同单词匹配

这是我的映射:

PUT /test12h31
{
  "mappings": {
      "proj": {
        "properties": {
          "movieTitle": {
            "type": "text",
            "fields": {
             "keyword": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
            },
            "analyzer": "french"
          }
        }
      }
    }
}

我输入数据:

 PUT /test12h31/proj/_search
    {
       "movieTitle":"Le Retour Du Héros"
    }

当我进行搜索时,我没有结果:

POST /test12h31/proj/_search
{
  "query": {
    "match": {
        "movieTitle": "hero"
    }
  }
}

当我在搜索请求中用“héro”替换“hero”时,我有一个结果。

你能帮我理解会发生什么以及如何忽略口音吗?

1 个答案:

答案 0 :(得分:2)

french分析器不会处理重音,因为您需要包含asciifolding令牌过滤器。

我建议您修改索引设置和映射,以便重新定义french分析器以包含asciifolding令牌过滤器:

PUT /test12h31
{
  "settings": {
    "analysis": {
      "filter": {
        "french_elision": {
          "type":         "elision",
          "articles_case": true,
          "articles": [
              "l", "m", "t", "qu", "n", "s",
              "j", "d", "c", "jusqu", "quoiqu",
              "lorsqu", "puisqu"
            ]
        },
        "french_stop": {
          "type":       "stop",
          "stopwords":  "_french_" 
        },
        "french_stemmer": {
          "type":       "stemmer",
          "language":   "light_french"
        }
      },
      "analyzer": {
        "french": {
          "tokenizer":  "standard",
          "filter": [
            "french_elision",
            "lowercase",
            "asciifolding",
            "french_stop",
            "french_stemmer"
          ]
        }
      }
    }
  },
      "mappings": {
          "proj": {
            "properties": {
              "movieTitle": {
                "type": "text",
                "fields": {
                 "keyword": {
                          "type": "keyword",
                          "ignore_above": 256
                        }
                },
                "analyzer": "french"
              }
            }
          }
        }
    }
}

然后您将获得搜索结果。