1

我是 pylucene 的新手,我正在尝试构建一个自定义分析器,它仅基于下划线标记文本,即它应该保留空格。示例:"Hi_this is_awesome" 应该被标记为 ["hi", "this is", "awesome"] 标记。

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

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

4

1 回答 1

3

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

类UnderscoreSeparatorTokenizer(PythonCharTokenizer):
  def __init__(自我,输入):
    PythonCharTokenizer.__init__(self, input)

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

类UnderscoreSeparatorAnalyzer(PythonAnalyzer):
  def __init__(自我,版本):
    PythonAnalyzer.__init__(self, version)

  def tokenStream(self, fieldName, reader):
    tokenizer = UnderscoreSeparatorTokenizer(读者)
    tokenStream = LowerCaseFilter(tokenizer)
    返回令牌流
于 2013-05-09T19:45:38.567 回答