2

Lucene.Net (バージョン 2.9) を使用しています。ツイート投稿「@name」または「#Note」を保存したい。

Lucene AnalyzerViewer ツール (http://www.codeproject.com/KB/cs/lucene_analysis.aspx?msg=3326095#xx3326095xx) を使用して、さまざまなアナライザーによって生成されたトークンを確認します。

たとえば、このテキストから以下のトークンが生成されます。

  • ホワイトスペース アナライザー: [#注:] [演習] [~] [ライブ] [長く。]
  • 標準アナライザー: [メモ] [演習] [ライブ] [長時間]
  • シンプルなアナライザー: [メモ] [演習] [~] [ライブ] [長く]

「ホワイトスペース アナライザー」はハッシュ タグを保持します。WhitespaceTokenizer と小文字を使用するカスタム アナライザーを作成しました。

カスタム アナライザー コード...

public class CustomAnalyzer : Analyzer
{
    public override TokenStream TokenStream(string fieldName, System.IO.TextReader reader)
    {
        TokenStream result = new Lucene.Net.Analysis.WhitespaceTokenizer(reader);

        // Makes sure everything is lower case
        result = new LowerCaseFilter(result);

        //Return the built token stream.)
        return result;
    }
}

ただし、カスタム アナライザーは句読点を残します。カスタム アナライザーによって生成されるトークン: [#note:] [excercise,] [to] [live] [longer.]

「#」、「@」タグが保持され、句読点が削除されるフィルターを使用するための提案はありますか?

前もって感謝します。

4

1 に答える 1

0

lucene の Java バージョンには、トークンの分割に使用されるパターンを指定できる PatternAnalyzer があります。

ドキュメント: http://lucene.apache.org/java/2_9_4/api/contrib-memory/org/apache/lucene/index/memory/PatternAnalyzer.html

このアナライザーの .net バージョンに注意するか、独自に移植することができます。

于 2011-04-14T10:16:09.427 に答える