【问题标题】:Elastic tokenize into all possible word cominations弹性分词器到所有可能的单词组合中
【发布时间】:2018-02-02 12:34:38
【问题描述】:

给定输入“quick brown fox jumped”,我想为单词创建所有可能的标记组合。所以示例字符串将被标记为

[
"quick", "quick brown", "quick fox", "quick jumped",
"brown", "brown quick", "brown fox", "brown jumped",
                      ...,
"jumped quick", "jumped brown", "jumped fox", "jumped"
]

我可以使用shingle tokeniser,但它只能通过连接相邻的术语来创建新的标记,我最终得到:

[
"quick", "quick brown", "quick brown fox", "quick brown fox jumped",
"brown", "brown fox", "brown fox jumped",
"fox", "fox jumped",
"jumped"
]

这是正确的一步,但不是我正在寻找的东西。

【问题讨论】:

  • 你能解释一下你所追求的用例吗?
  • @Val 长话短说 - 不仅针对单个术语([“quick”、“brown”、“fox”、“jumped”])而且还针对这些单词的组合生成术语聚合/条款

标签: elasticsearch combinations elasticsearch-5 elasticsearch-2.0


【解决方案1】:

在您的评论中,您说这里的用例是获取文档中出现的单词组合的聚合。您可以使用标准标记器,并且仍然可以获取该信息。例如,假设您有带有“body”字段的文档:

1:敏捷的棕狐跳过小狗

2:小狗吃东西

所以我想你想看到类似的东西:

小狗:2

小:2

狗:2

吃的:1

...

然后你可以这样查询:

{
  "size": 0,
  "aggs": {
    "firstlevel": {
      "terms": {
        "field": "body"
      },
      "aggs": {
        "secondlevel": {
          "terms": {
            "field": "body"
          }
        }
      }
    }
  }
}

你会得到这样的回应:

"aggregations": {
  "firstlevel": {
  "doc_count_error_upper_bound": 0,
  "sum_other_doc_count": 1,
  "buckets": [
    {
      "key": "dog",
      "doc_count": 2,
      "secondlevel": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 1,
        "buckets": [
          {
            "key": "dog",
            "doc_count": 2
          },
          {
            "key": "little",
            "doc_count": 2
          },
          {
            "key": "the",
            "doc_count": 2
          },
          {
            "key": "brown",
            "doc_count": 1
          }
       ...

您可以看到“little”和“dog”同时出现在 2 个文档中,“the”和“dog”同时出现在 2 个文档中,“dog”和“brown”同时出现在 1 个文档中文档。当然,这仅在您想要 唯一 共现计数时才有效。

如果你真的需要像你描述的那样的标记,我认为你必须编写代码来做到这一点(你可以从 Elasticsearch 中使用一个用于 Lucene 的自定义标记器,或者可能更简单,一个预处理添加一个字段,该字段是keywords 的列表)。

【讨论】:

    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 2022-08-24
    • 1970-01-01
    • 2017-01-21
    相关资源
    最近更新 更多