Elasticsearch令牌过滤器,用于删除单个单词的令牌

时间:2018-07-17 09:55:14

标签: regex elasticsearch

尽管无法正常工作,但似乎有一个非常简单的问题。 我有单词的令牌流,我想删除任何单个单词的令牌,例如[the quick, brown, fox]应该输出为[the quick]

我尝试使用pattern_capture令牌过滤器,并使用了多种类型的模式,但它只会生成新的令牌,而不会删除旧的令牌。

这是我制造的分析仪(为简化起见,缩写为

"analyzer": {
  "job_analyzer": {
      "type": "custom",
      "tokenizer": "whitespace",
      "char_filter": [
        "some_custom_char_filter"
      ],
      "filter": [
        other filters....,
        "dash_drop",
        "trim",
        "unique",
        "drop_single_word"
      ]
    }
  },
  "char_filter": {...},
  "filter": {
    "dash_drop": {
      "type": "pattern_capture",
      "preserve_original": false,
      "patterns": [
          "([^-]+)\\s?(?!-.+)",
          "- (.+)"
        ]
    },
    "drop_single_word": {
      "type": "pattern_capture",
      "preserve_original": false,
      "patterns": [**nothing here works**]
    }
  }
}

我知道我正在使用whitespace令牌将句子分解为单词,但此处未显示的是使用shingles创建新的nGrams。

使用dash_drop过滤器的目的是将带有-的句子拆分为没有-的标记,因此例如:my house - my rules将拆分为[my house, my rules]

任何帮助都是极大的帮助。

0 个答案:

没有答案