一尘不染

具有词nGrams的多词术语向量?

elasticsearch

我的目标是为每个文档建立一个索引,将其按单词ngram(uni,bi和tri)分解,然后捕获所有这些单词ngram的术语向量分析。Elasticsearch有可能吗?

例如,对于包含“红色汽车行驶”的文档字段。我将能够获得信息:

red - 1 instance
car - 1 instance
drives - 1 instance
red car - 1 instance
car drives - 1 instance
red car drives - 1 instance

提前致谢!


阅读 179

收藏
2020-06-22

共1个答案

一尘不染

假设您已经了解术语向量API,则可以在索引时间应用带状令牌过滤器,以将这些术语彼此独立地添加到令牌流中。

设置min_shingle_size为1(而不是默认值2),并max_shingle_size至少设置为3(而不是默认值2)

并且基于您将“
the”排除在可能的条件之外的事实,您应在应用带状疱疹过滤之前使用停用词过滤器。

分析仪设置如下所示:

{
  "settings": {
    "analysis": {
      "analyzer": {
        "evolutionAnalyzer": {
          "tokenizer": "standard",
          "filter": [
            "standard",
            "lowercase",
            "custom_stop",
            "custom_shingle"
          ]
        }
      },
      "filter": {
        "custom_stop": {
            "type": "stop",
            "stopwords": "_english_",
            "enable_position_increments":"false"
        },
        "custom_shingle": {
            "type": "shingle",
            "min_shingle_size": "1",
            "max_shingle_size": "3"
        }
      }
    }
  }
}

您可以使用_analyzeapi端点测试分析器。

2020-06-22