多字符过滤器/分析仪

时间:2019-04-03 09:14:01

标签: elasticsearch character stemming

示例

quatro
quattro
quatttro
...
quatttttttttttttttttttttttttro

所需的输出

quatro

如何分析(或过滤..?)这些术语,因此elasticsearch分析器将仅返回quatro

1 个答案:

答案 0 :(得分:0)

也许不是最好的解决方案,因为我必须使用_source,并且_source相当慢,但是它可以工作(您可以找到一种返回'abc'而不是'a','b','c'的方法,我想办法了; ))

当然,最好的解决方案应该是在索引时间删除它们。 我不希望您为此做一个分析器(因为字符的顺序很重要)

{
  "size": 0,
  "aggs": {
    "removeDup": {
      "terms": {
        "script": "def dup = new ArrayList(); def lastval = ''; def array_chars = params['_source']['yourfieldname'].toCharArray();for (int i=0; i< array_chars.length; i++){if(array_chars[i] != lastval) {lastval = array_chars[i];dup.add(lastval);}} return dup.toString();"
      }
    }
  }
}