举个例子

edit

用的最多的语汇单元过滤器(token filters)是 lowercase 过滤器,它的功能正和你期望的一样;它将每个词元(token)转换为小写形式:

GET /_analyze?tokenizer=standard&filters=lowercase
The QUICK Brown FOX! 

得到的词元(token)是 the, quick, brown, fox

只要查询和检索的分析过程是一样的,不管用户搜索 fox 还是 FOX 都能得到一样的搜索结果。lowercase 过滤器会将查询 FOX 的请求转换为查询 fox 的请求, fox 和我们在倒排索引中存储的是同一个词元(token)。

为了在分析过程中使用 token 过滤器,我们可以创建一个 custom 分析器:

PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_lowercaser": {
          "tokenizer": "standard",
          "filter":  [ "lowercase" ]
        }
      }
    }
  }
}

我们可以通过 analyze API 来验证:

GET /my_index/_analyze?analyzer=my_lowercaser
The QUICK Brown FOX! 

得到的词元是 the, quick, brown, fox