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

如何在ZZ_CMAP_PACKED中获得单词边界?

魏鸿
2023-03-14

我正在尝试编写我的第一个Elasticsearch分析插件,我从github中找到了一个可扩展的标准Analyzer插件项目:Elasticsearch分析standardext,在该项目中它提供了以下代码:

   /** 
    * Word Boundary "character classes" that are used in the ZZ_CMAP_PACKED 
    * string 
    */ 
   public static final Character WB_CLASS_BREAK               = '\0'; 
   public static final Character WB_CLASS_LETTER              = '\176'; 
   public static final Character WB_CLASS_NUMERIC             = '\200'; 
   public static final Character WB_CLASS_MID_LETTER          = '\202'; 
   public static final Character WB_CLASS_MID_NUMBER          = '\203'; 
   public static final Character WB_CLASS_MID_NUMBER_LETTER   = '\204'; 
   public static final Character WB_CLASS_EXTENDED_NUM_LETTER = '\205'; 
   public static final Character WB_CLASS_SINGLE_QUOTE        = '\212'; 
   public static final Character WB_CLASS_DOUBLE_QUOTE        = '\213'; 

这里是链接

我想知道如何获得这些单词边界的字符类。

我问有问题的作者:如何获得单词边界“字符类”?#2,但是作者似乎不会回答我的问题。

我尝试阅读Unicode文本分段文档:https://www.unicode.org/reports/tr29/,但我真的找不到我想要的东西,因为它既难又长。

我从lucene存储库下载了标准Analyzer代码,它在这里:https://github.com/apache/lucene-solr/tree/releases/lucene-solr/8.1.0/lucene/core/src/java/org/apache/lucene/analysis/standard

似乎StandardTokenizerImpl。java类是从StandardTokenizerImpl生成的。jflex,我可以在jfex的帮助下获得这些单词边界的字符类吗

谢谢有人帮助我。

共有1个答案

裴凯定
2023-03-14

我发现我们可以从文件中得到这个世界的边界:https://www.unicode.org/reports/tr29/#Word_Boundaries,而且由于项目elasticsearch analysis standardext是elasticsearch的老版本。它不适用于Elasticsearch版本=7.3。2.

我们可以发现,现在Lucene不支持像ALetter这样简单的世界边界,它的格式将是

MidLetterEx         = [\p{WB:MidLetter}\p{WB:MidNumLet}\p{WB:SingleQuote}] 

我们可以从文件StandardTokenizerImpl中看到这一点。jflex

因此,如果您想从ZZ_CMAP_压缩中获取世界边界,您应该参考文档Word_边界。

如果你想写一个定制的标准化标记器,这可能会对你有所帮助。

您也可以参考Lucene项目的ClassicTokenizer,它将帮助您!

 类似资料:
  • 我是新来的,我想要得到一个文本文件的单词列表和单词数。这是我尝试过的代码: 输出:century Cepheus CEQ陶瓷Cerberus谷类小脑错误文件字数:0

  • 问题内容: 我正在尝试在Pymongo中订购字典。我读过可以用bson.son.Son完成。文件在这里 但是,我似乎无法使其工作。谷歌上没有太多关于它的信息。关于首先配置pymongo以便告诉它使用SON对象有一些讨论,但没有示例。一位朋友建议您在查找时传递一个参数。他不记得了。 我可以创建SON对象。但是,当它们插入数据库然后又出来时,它们只是简单的命令。 我不确定要给您什么代码示例,因为我真的

  • 我一直在使用Stanford POS Tagger标记句子中的词性。我从stackoverflow上的留档和其他问题中学到的是,下面的代码给出了句子的POS标记 但我想要的是获得单个单词的POS标签。一种可能的方法是分解输入字符串并逐字逐句地向Tagger提供输入,但它似乎并不优雅,我认为它增加了出错的机会。Javadoc说应用函数可以返回标记单词的数组列表,但我无法成功调用此函数。任何想法,我怎

  • 问题内容: 文字为: 我只想得到 我试过了 : 但这给了我: 问题答案: 正则表达式是不必要的。只需使用或即可。

  • 问题内容: 我搜索了这个问题,但找不到任何有用的答案。我想获取文档中每个单词的总数,例如,我的索引中有一些推文,并且有一条推文中写着这样的内容:“这里太无聊了,我想去我的家,甜蜜的家”。查询应返回如下响应: 有可能这样做吗? 问题答案: 您正在寻找利用分析仪的。这样做时,您可以定义所需的任何分析器,即阻止分析器将单词转换为根/普通形式。查看文档以获取更多详细信息。 在: 出:

  • 问题内容: 我目前正在编写一个用于匹配内容中特定单词的库。 本质上,它的工作方式是将单词编译为正则表达式,然后通过所述正则表达式运行内容。 我要添加的功能是指定要匹配的给定单词是否必须以单词开头和/或结尾。例如,我有这个词。我指定它 必须开始一个字 ,因此将 匹配 的是在开始,但 不能匹配 为不启动的话。 我想使用单词边界来执行此操作,但是在进行一些测试时,我发现它无法正常运行。 采取以下措施,