Luceneアナライザーの比較


104

誰かがLucene内の異なるアナライザーの違いを説明できますか?maxClauseCount例外が発生し、KeywordAnalyzerを使用することでこれを回避できることを理解していますが、アナライザーを取り巻く問題を理解せずにStandardAnalyzerから変更したくありません。どうもありがとう。

回答:


209

一般に、Luceneのアナライザーはトークナイザー+ステマー+ストップワードフィルターです。

Tokenizerはテキストをチャンクに分割します。異なるアナライザーが異なるトークナイザーを使用する場合があるため、異なる出力トークンストリーム、つまりテキストのチャンクのシーケンスを取得できます。たとえば、テキストはまったく分割KeywordAnalyzerれず、すべてのフィールドが1つのトークンとして扱われます。同時に、StandardAnalyzer(および他のほとんどのアナライザー)は、分割点としてスペースと句読点を使用します。たとえば、フレーズ「I am very happy」の場合、リスト["i"、 "am"、 "very"、 "happy"](またはそのようなもの)が生成されます。特定のアナライザー/トークン化機能の詳細については、Javaドキュメントを参照してください。

ステマーは、問題の単語のベースを取得するために使用されます。使用する言語に大きく依存します。たとえば、英語の前のフレーズの場合、["i"、 "be"、 "veri"、 "happi"]のようなものが生成され、フランス語の "Je suistrèsheureux"の場合は、ある種のフランス語アナライザ(SnowballAnalyzer、 with "French")は["je"、 "être"、 "tre"、 "heur"]を生成します。もちろん、ある言語のアナライザーを使用して別の言語のテキストをステミングする場合、他の言語のルールが使用され、ステマーは誤った結果を生成する可能性があります。すべてのシステムで失敗するわけではありませんが、検索結果の精度が低下する可能性があります。

KeywordAnalyzerステマーを使用せず、すべてのフィールドを変更せずに渡します。したがって、英語のテキストでいくつかの単語を検索する場合は、このアナライザーを使用することはお勧めできません。

ストップワードは最も頻繁に使用され、ほとんど役に立たない言葉です。繰り返しますが、それは言語に大きく依存します。英語の場合、これらの単語は「a」、「the」、「I」、「be」、「have」などです。ストップワードフィルターは、これらをトークンストリームから削除して、検索結果のノイズを減らします。 「とても幸せ」はStandardAnalyzerリスト[「veri」、「happi」]に変換されます。

そしてKeywordAnalyzer再び何もしません。したがって、KeywordAnalyzerIDや電話番号などに使用されますが、通常のテキストには使用されません。

そして、あなたのmaxClauseCount例外として、私はあなたが検索でそれを得ると信じています。この場合は、検索クエリが複雑すぎるためと考えられます。複数のクエリに分割するか、より低レベルの関数を使用してください。


1
@ffriend:Stemmer(snowballまたは他のアルゴリズムを使用)がamに変換できないと思います-> Lemmatizerの仕事だからです。こちらで確認できます。snowball.tartarus.org
demo.php

では、ティカはこれにどこに適合するのでしょうか?技術的にはアナライザではないですか?
2015年

1
@anon:Tikaは、いくつかの重要な機能を持つ独立したプロジェクトです。Tikaパーサーを意味すると想定すると、Tikaはバイトストリームを受け取り、テキスト+メタデータを出力しますが、Luceneアナライザーはテキストを取り、処理されたトークンストリームを出力します。たとえば、最初にPDFまたはXMLファイルをTikaで解析し、「title」、「author」、「text」などのフィールドを持つドキュメントを作成してから、Luceneアナライザーでこれらのフィールドの一部またはすべてを分析します。
ffriend 2015年

「非常に」と「幸せ」は拒否された言葉ではないのですが、なぜ「ベリ」と「ハッピー」に変換されるのでしょうか。それらは似ているように聞こえるので、i <-> yの違いに一致するのですか?
oguzalb

0

私の見解では、StandAnalyzerおよびを使用しましたSmartCNAnalyzer。中国語でテキストを検索しなければならないので。明らかに、SmartCnAnalyzer中国語の処理に優れています。別の目的のために、適切なアナライザーを選択する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.