1

私はピルセンが初めてで、アンダースコアのみに基づいてテキストをトークン化するカスタム アナライザーを構築しようとしています。つまり、空白を保持する必要があります。例: "Hi_this is_awesome" は ["hi", "this is", "awesome"] トークンにトークン化する必要があります。

さまざまなコード例から、CustomTokenizer の incrementToken メソッドをオーバーライドし、同じことを達成するために TokenStream が CustomTokenizer に続いて LowerCaseFilter を使用する必要がある CustomAnalyzer を記述する必要があることを理解しました。

ピルセンに関するドキュメントがほとんどないため、incrementToken メソッドの実装とドットの接続 (通常、アナライザーは TokenStreams に依存する TokenFilter に依存するため、トークナイザーの使用方法) で問題に直面しています。

4

1 に答える 1

3

アンダースコア以外のすべての文字を生成されたトークンの一部と見なす新しい tokenzier を作成することで、最終的に機能するようになりました (基本的にアンダースコアは区切り文字になります)。

クラス UnderscoreSeparatorTokenizer(PythonCharTokenizer):
  def __init__(自己、入力):
    PythonCharTokenizer.__init__(self, input)

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

クラスUnderscoreSeparatorAnalyzer(PythonAnalyzer):
  def __init__(自己、バージョン):
    PythonAnalyzer.__init__(自己、バージョン)

  def tokenStream (自己、フィールド名、リーダー):
    tokenizer = UnderscoreSeparatorTokenizer(リーダー)
    tokenStream = LowerCaseFilter(トークナイザー)
    トークンストリームを返す
于 2013-05-09T19:45:38.567 に答える