当存在非字母表时,Elasticsearch tokenizer转换为小写而不分割

时间:2018-03-05 14:20:35

标签: elasticsearch

使用弹性搜索的lowercase标记生成器时,它会将文本转换为小写,并且每当遇到不是字母的字符时,也会将文本分解为术语。

在遇到非字母表时将文本分解为术语是我不想要的。

我查看了standardletter标记符 - 尝试了一种构建自定义标记生成器的方法但是徒劳无功。

示例:当Postgres9使用lowercase标记生成器作为输入时,它会被转换为['postgres','9'],但我需要的是['postgres9'](转换为小写而不分割为非字母)

2 个答案:

答案 0 :(得分:1)

您应该查看令牌过滤器。 https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenfilters.html

这样的事情应该做:

POST _analyze
{
  "tokenizer": "standard",
  "filter":  [ "lowercase"],
  "text":      "ABC4def pqr6LMN Postgres9"
}

答案 1 :(得分:0)

标准分析器使用特殊字符创建令牌,因此您可以使用关键字分析器和小写过滤器。只转换为小写而不是额外的:

df$Distance <- c(NA, distHaversine(head(p, -1), tail(p, -1)))