当前位置: 首页 > 知识库问答 >
问题:

创建具有边N格分析器和字符过滤器的分析器,该过滤器用新的行替换空间

方玄天
2023-03-14

我有下面类型的文本进来。foo barhello world等。我使用Edge NGram标记器和它在标记下面创建的分析api创建了一个分析器。

{
  "tokens": [
    {
      "token": "f",
      "start_offset": 0,
      "end_offset": 1,
      "type": "word",
      "position": 1
    },
    {
      "token": "fo",
      "start_offset": 0,
      "end_offset": 2,
      "type": "word",
      "position": 2
    },
    {
      "token": "foo",
      "start_offset": 0,
      "end_offset": 3,
      "type": "word",
      "position": 3
    },
    {
      "token": "b",
      "start_offset": 4,
      "end_offset": 5,
      "type": "word",
      "position": 4
    },
    {
      "token": "ba",
      "start_offset": 4,
      "end_offset": 6,
      "type": "word",
      "position": 5
    },
    {
      "token": "bar",
      "start_offset": 4,
      "end_offset": 7,
      "type": "word",
      "position": 6
    }
  ]
}
@Override
    public TokenStream tokenStream(String fieldName, Reader reader) {
        NormalizeCharMap normalizeCharMap = new NormalizeCharMap();
        normalizeCharMap.add(" ", "\\u2424");
        Reader replaceDots = new MappingCharFilter(normalizeCharMap, reader);
        TokenStream result = new EdgeNGramTokenizer(replaceDots, EdgeNGramTokenizer.DEFAULT_SIDE, 1, 30);
        return result;
    }

共有1个答案

彭阳朔
2023-03-14

您使用analyze API测试的是edge-ngram标记过滤器,它不同于edge-ngram标记器。

代码中,如果希望代码中的行为与使用analyze API测试的行为相同,则需要将EdgenGramTokenizer替换为EdgenGramTokenFilter

 类似资料:
  • 问题内容: 我有以下类型的文本中来了。 ,等我使用边缘NGRAM分词器,并使用分析它产生以下令牌API创建的分析。 但是,当我在代码中将文本“ foo bar”传递给方法 tokenStream时 ,它将在 foo bar的 令牌下面创建。 f,fo,foo,foo,foo b,foo ba,foo bar。 这会导致 分析 api 返回的令牌不匹配。我想知道如何 添加一个char过滤器,该过滤器

  • 本文向大家介绍AngularJS过滤器filter用法分析,包括了AngularJS过滤器filter用法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了AngularJS过滤器filter用法。分享给大家供大家参考,具体如下: 在开发中,经常会遇到这样的场景 如用户的性别分为“男”和“女”,在数据库中保存的值为1和0,用户在查看自己的性别时后端返回的值自然是1或0,前端要转换为“男”

  • 我有一个,我希望用户输入一个人的姓名。我认为名称应该包含、和示例。我正在使用来验证用户输入。但是,我不知道如何在我的中设置它。 问题:我应该如何修改我的过滤器来实现上述行为? 任何关于如何验证一个人的名字的建议都被接受。 这是我的DocumentFilter: 这是我的测试类:

  • 本文向大家介绍AngularJS过滤器filter用法实例分析,包括了AngularJS过滤器filter用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了AngularJS过滤器filter用法。分享给大家供大家参考,具体如下: 这节我们来看看angularjs的过滤器filter。 在我们开发中经常需要在页面显示给用户的信息需要一定处理格式化,才能显示给用户。比如时间本地化,

  • 问题内容: 我已经下载了包含技能分类法的onet数据集,并将其上传到了Elasticsearch中。在技​​能分类中,有一些技能,例如c ++ 、. net,C#。我想给c#并且只获得c#的技能。通过检查一些链接,我已如下设置索引的映射和设置。 当我使用如下查询 我正在获得所有具有“ c”的技能 当我使用以下查询时假设应用了分析器 我得到空输出。我是否正确包括了分析仪,或者我的查询错误? 问题答案

  • 我正在为我的硕士使用py elasticsearch dsl,我正在土耳其标题语料库中创建标题文档索引,我需要为土耳其语言实现一个自定义的小写分析器:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-lowercase-tokenfilter.html#analysis-小写令牌过滤器 我试着这样做: