【问题标题】:how use shingle token elasticsearch begin from string如何使用 shingle token elasticsearch 从字符串开始
【发布时间】:2016-03-02 22:40:55
【问题描述】:

我想用Shingle token将字符串“The quick brown fox jumps over the lazy dog”解析成:

1.该

2.快速

...

n.敏捷的棕狐跳过懒狗

我需要帮助。 谢谢。

【问题讨论】:

  • 请在问题中包含您已经尝试过的代码或配置,以便更好地回答您的问题。

标签: elasticsearch


【解决方案1】:

通过使用以下索引设置,我们创建了一个带有 shingle 令牌过滤器的自定义分析器,您将能够生成您期望的术语:

curl -XPUT localhost:9200/your_index -d '{
  "settings": {
    "index": {
      "number_of_shards": "5",
      "number_of_replicas": "1",
      "analysis": {
        "analyzer": {
          "my_shingles": {
            "tokenizer": "standard",
            "filter": [
              "shingles"
            ]
          }
        },
        "filter": {
          "shingles": {
            "type": "shingle",
            "min_shingle_size": 2,
            "max_shingle_size": 10
          }
        }
      }
    }
  },
  "mappings": {
    "your_type": {
      "properties": {
        "field": {
          "type": "string",
          "analyzer": "my_shingles"
        }
      }
    }
  }
}'

然后,我们可以要求_analyze 端点显示它如何标记您的句子:

 curl -XGET 'localhost:9200/your_index/_analyze?analyzer=my_shingles&pretty' -d 'The quick brown fox jumps over the lazy dog'

响应将是

{
  "tokens" : [ {
    "token" : "The",
    "start_offset" : 0,
    "end_offset" : 3,
    "type" : "<ALPHANUM>",
    "position" : 1
  }, {
    "token" : "The quick",
    "start_offset" : 0,
    "end_offset" : 9,
    "type" : "shingle",
    "position" : 1
  }, {
    "token" : "The quick brown",
    "start_offset" : 0,
    "end_offset" : 15,
    "type" : "shingle",
    "position" : 1
  }, {
    "token" : "The quick brown fox",
    "start_offset" : 0,
    "end_offset" : 19,
    "type" : "shingle",
    "position" : 1
  }, {
    "token" : "The quick brown fox jumps",
    "start_offset" : 0,
    "end_offset" : 25,
    "type" : "shingle",
    "position" : 1
  }, {
    "token" : "The quick brown fox jumps over",
    "start_offset" : 0,
    "end_offset" : 30,
    "type" : "shingle",
    "position" : 1
  }, {
    "token" : "The quick brown fox jumps over the",
    "start_offset" : 0,
    "end_offset" : 34,
    "type" : "shingle",
    "position" : 1
  }, {
    "token" : "The quick brown fox jumps over the lazy",
    "start_offset" : 0,
    "end_offset" : 39,
    "type" : "shingle",
    "position" : 1
  }, {
    "token" : "The quick brown fox jumps over the lazy dog",
    "start_offset" : 0,
    "end_offset" : 43,
    "type" : "shingle",
    "position" : 1
  }, {
  ...

您还会注意到会生成更多的带状疱疹,但上面的那些确实符合您的预期。

【讨论】:

  • 谢谢,但我只想查询位置为 1 的标记。
  • 好的,这并不明确。不幸的是,我不确定你能否用带状疱疹达到你所期望的效果。
猜你喜欢
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多