0

アナライザーを使用して構築された Lucene インデックスがあります。インデックスを使用してコンテンツを検索していますが、ほとんどの場合、アナライザーが必要です。

さて、アナライザーの影響を受けずにフィールド内のテキストを検索したい場合はほとんどありませんが、同じインデックスのフィールドを検索することは可能ですか? クエリを作成するにはどうすればよいですか?

ワイルドカード クエリを使用すると、生のテキストで検索を実行したいときに、分析されたテキスト内が検索されます。

4

2 に答える 2

4

コメントで説明したケースは、ステマーでアナライザーを使用していることを示しています。おそらくEnglishAnalyzer (これにはPorterStemmerが組み込まれています)。アナライザーをまったく使用せずにトークン化されていないフィールドが作成され、検索が困難になるのではなく、Stem を使用しないアナライザーを調べます。

  • StandardAnalyzer- 優れた標準であり、Unicode 標準のテキスト セグメンテーションを実装しています。主に言語固有ではありません。
  • SimpleAnalyzer-示されているように、非常に単純なアナライザー。連続した文字のグループにトークン化し、それらを小文字にします。警告: 数字はこのトークナイザーによって失われます!
  • WhitespaceAnalyzer- また、非常に単純で、空白の周りにトークンを作成します。トークンを小文字にしたり、正規化したりしません。多くの場合、これは単純すぎて役に立ちません。
  • ClassicAnalyzer- 3.X で StandardAnalyzer であったもののロジックを実装します。それでも便利なアナライザーです。

本当にAnalyzerなしで行きたい場合StringFieldは、トークン化や分析をバイパスするだけです。

于 2013-06-11T16:18:41.007 に答える
1

デフォルトのアナライザーを使用してドキュメントを含むフィールドと、WhitespaceAnalyzerを使用してインデックスを作成することをお勧めします。

この ussign を作成できますhttp://lucene.apache.org/core/4_0_0-BETA/analyzers-common/org/apache/lucene/analysis/miscellaneous/PerFieldAnalyzerWrapper.html

完全一致検索が必要な場合は、whitespacetokenizer を含むフィールドを検索します。それ以外の場合は、Analyzer によって処理されるテキストを含むフィールドを使用します。

于 2013-06-11T13:00:28.200 に答える