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

pylucene的自定义标记器,仅基于下划线标记文本(保留空格)

洪胤
2023-03-14

我是pylucene的新手,我试图构建一个自定义分析器,它只在下划线的基础上标记文本,即它应该保留空白空间。示例:“hi_this is_awesome”应该标记为[“hi”,“this is”,“awesome”]标记。

从各种代码示例中,我了解到需要重写CustomTokenizer的incrementToken方法,并编写CustomAnalyzer,TokenStream需要使用CustomTokenizer后跟LowerCaseFilter来实现相同的功能

我在实现incrementToken方法和连接点时遇到了一些问题(标记器是如何使用的,通常分析器依赖于TokenFilter,而TokenFilter依赖于TokenStreams),因为关于Pylucene的文档很少。

共有1个答案

令狐晟
2023-03-14

通过创建一个新的标记器,将除下划线以外的每个字符视为生成的标记的一部分(基本上下划线成为分隔符),最终使其工作

class UnderscoreSeparatorTokenizer(PythonCharTokenizer):
  def __init__(self, input):
    PythonCharTokenizer.__init__(self, input)

  def isTokenChar(self, c):
    return c != "_"

class UnderscoreSeparatorAnalyzer(PythonAnalyzer):
  def __init__(self, version):
    PythonAnalyzer.__init__(self, version)

  def tokenStream(self, fieldName, reader):
    tokenizer = UnderscoreSeparatorTokenizer(reader)
    tokenStream = LowerCaseFilter(tokenizer)
    return tokenStream
 类似资料:
  • 定义和使用自定义标记可以吗?(这不会与将来的html标记冲突)-通过更改outerHTML替换/呈现这些标记?? 我在下面创建了一个演示,看起来效果不错 问题的最新情况: 让我进一步解释一下。请假设浏览器上启用了JavaScript-也就是说,应用程序不应该在没有javascript的情况下运行。 我见过使用自定义属性在指定标记中定义自定义行为的库。例如,角度。js大量使用自定义属性。(它还有关于

  • 但是我需要添加另一个特性--我需要启用前缀过滤器。例如:当我搜索test_table(10个字符)时,我能够得到结果,因为最大n-gram是10,但是当我尝试test_table_for时,它返回零结果,因为记录没有这个标记。 我怎样才能添加一个基于前缀的过滤器也为现有的n-gram分析器?就像我应该能够得到匹配的结果最多10个字符时搜索(目前工作),而且我应该能够建议什么时候搜索字符串匹配记录从

  • 我有一个标记化的文本(拆分的句子和拆分的单词)。并将基于此结构创建Apache Lucene索引。什么是最简单的方法来扩展或替换一个standart标记器使用自定义标记。我正在查看StandardTokenizerImpl,但似乎非常复杂。可能还有别的办法吗?

  • 我正在尝试从xsd编译一个xmlbean jar。xsd是供应商提供给我的,所以我无法更改它。名称属性“CON”导致XML bean抛出异常,如下所示:线程“main”中的异常org.apache.xmlbeans.模式类型加载异常……(系统找不到指定的路径)。如果我将标签属性更改为“CON1”,问题就解决了,因此它肯定是不喜欢的字符串CON。有办法解决这个问题吗?我包括了一个我一直用于测试目的的

  • 我正在使用React视图上的Highcharts。出于可访问性和搜索引擎优化的原因,我想定制标记,但我在文档中找不出如何实现。Highcharts会自动插入一个标记,如下所示: <代码> 有没有办法改变这一点,或者这是硬编码的?

  • 因此,我目前正在尝试找出,如果提供的数据模型不包含标记,是否可以保留该值。我知道,但这不适用于FreeMarker标记。 基本上,我想做的是: