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

时间:2013-05-08 04:58:57

标签: python lucene pylucene

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

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

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

1 个答案:

答案 0 :(得分:3)

最终通过创建一个新的tokenzier来实现它的工作,这个新的tokenzier将除了下划线之外的每个字符都视为生成的令牌的一部分(基本上下划线成为分隔符)

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