首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >课文中短语之间有多少个单词?

课文中短语之间有多少个单词?
EN

Stack Overflow用户
提问于 2018-12-05 12:59:43
回答 1查看 51关注 0票数 1

我有一个问题,课文中短语之间的单词是如何计数的?例如,我有下一个文本:

埃隆·马斯克( Elon )是一位科技企业家和投资者。他是SpaceX的创始人、首席执行官和首席设计师。埃隆·马斯克( Elon )表示,SpaceX、Tesla和SolarCity的目标围绕着他改变世界和人类的愿景。

我想数一数"Elon“和"SpaceX”或"SolarCity“和"Tesla”之间有多少单词。如何在一个文档的框架内进行弹性搜索?

EN

回答 1

Stack Overflow用户

发布于 2018-12-09 21:42:00

下面是我想出的。

映射

您需要确保该字段的类型为keyword,并且您将使用使用该文档的id字段的术语查询,以便只对该文档应用以下逻辑。

我创建了一个由单个多字段myfield组成的示例映射,如下所示:

代码语言:javascript
复制
{  
   "myfield":{  
      "type":"text",
      "fields":{  
         "keyword":{  
            "type":"keyword",
            "ignore_above":256
         }
      }
   }
}

查询

我用脚本查询和聚合来计算两个短语之间的单词。

代码语言:javascript
复制
POST <your_index_name>/_search
{
  "query": {
    "term": {
      "_id": "1"
    }
  },
  "aggs": {
    "wordCount": {
      "sum": {
        "script": {
          "source": """
            String st = doc['myfield.keyword'].value.toString();
            if(st.contains(params.phrase_1) && st.contains(params.phrase_2)){
              int start = st.indexOf(params.phrase_1);
              int end = st.indexOf(params.phrase_2);

              //Substring would have list of words that includes phrase_1 till index of phrase_2
              String subString = st.substring(start,end);

              //Count tokens available in params.phrase_1
              StringTokenizer tokens_phrase_1 = new StringTokenizer(params.phrase_1);

              //Count total tokens available in substring
              StringTokenizer tokens = new StringTokenizer(subString);

              //Count = Count of Words - Count of words in phrase_1
              return tokens.countTokens()-tokens_phrase_1.countTokens();
            }else{
              //defensive logic
              return 0;
            }
          """,
          "params":{
            "phrase_1": "Elon Musk",
            "phrase_2": "SpaceX"

          }
        }
      }
    }
  }
}

注意,输入在params部分。我在上面的代码中添加了一些注释,这将有助于理解我是如何添加计算单词的逻辑的。

请测试这个,如果这有帮助,请告诉我!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53632934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档