Luceneコンポーネントと概要
Note
この機能は NCache Enterprise & 専門 エディション。
Luceneは、私たちが知っているように、ユーザーの要件に応じて幅広いテキスト検索技術を提供する強力で効率的な検索エンジンです。 Luceneは、ユーザーに与えられた選択肢がいかなる基準でも区別されないため、他のどのテキスト検索エンジンよりもはるかに優れています。 強力で強力な検索アルゴリズムを備えており、検索のための幅広いクエリをサポートしています。
Luceneアプリケーションには基本的なサイクルがあり、主に特定のパスで検索が実行される最初のインデックスデータで構成されます。 追加されるデータは、ユーザーのニーズに応じて任意のテキスト形式にすることができます。 データはインデックス化されてトークン化され、クエリを使用してこれらのトークンに対して検索が実行されます。 これは、最初にデータの処理を行い、次にデータを検索することを含むため、双方向のプロセスです。
次の図は、基本的なLuceneモデルのワークフローを示しています。
Luceneのコンポーネント
Luceneをテキスト検索に使用するために、Luceneで使用されるメインAPIを詳しく見てみましょう。 Luceneの完全なガイドではないことに注意してください。 ただし、基本的で根本的なLuceneAPIを理解するのに役立ちます。
以下は、Luceneベースのソリューションを構築するために使用される基本的なAPIです。
ディレクトリ: これは、インデックスが形成される場所を定義する基本クラスです。
ドキュメント: インデックス付けされるデータが含まれています。
アナライザ: データのインデックスが作成されている間、アナライザーは、データに対してトークン化と検索が行われる基準を決定します。 同様に、トークン化も含むデータのクエリ中に使用されます。
IndexWriter: 事前に作成されたドキュメントは、このクラスを使用してディレクトリに渡されます。 一度にXNUMXつのindexWriterを開くことができます。
IndexReader: インデックスが作成されるすべてのディレクトリには、インデックスからのデータの読み取りを担当するリーダーが開かれている場合があります。
IndexSearcher: 検索者は、リーダーを介してデータを照会する責任があります。
これらのクラスの詳細な説明を以下に示します。
ディレクトリ
このクラスは、Luceneインデックスが格納されている場所の表現です。 インデックスを維持するためにディレクトリを開いて、インデックスに対してさらに操作を実行できるようにする必要があります。
ドキュメント
ドキュメントはのコレクションです フィールド。 これらのフィールドには、フィールド名に対する値としてテキストデータが含まれています。 値は、インデックスを作成して将来検索できるようにするデータです。 すべてのフィールドで、ユーザーはそのフィールド値を分析するかどうかを指定できます。 ドキュメントは基本的に、フィールドが検索されたときに返される検索の単位です。 searchterm
.
アナライザ
Analyzer
前に説明したように、提供されたタイプに従って、データをより小さなチャンクにトークン化するという主な責任があります。 基本的に、ドキュメントのフィールドをインデックス可能なトークンに解析します。 アナライザーによって分析されるデータの方法は、データを検索するユーザーの能力に影響を与えます。 以下にリストされているのは、XNUMXつの基本的で最も一般的に使用されるLuceneアナライザーです。
ホワイトスペースアナライザー
このアナライザーは、名前が示すように空白に従ってデータを分析します。 さらに、このアナライザーは単語の大文字小文字を区別します。 主に含まれるケースに応じて、データのトークン化を実行します。
標準アナライザー
ストップワードに従ってデータを分析するだけでなく、単純なアナライザーと同様に小文字でデータのトークン化を実行します。 さらに、URLと電子メールアドレスを認識し、それに応じてトークンを生成します。 この機能により、最もインテリジェントなアナライザーと見なされるため、最も一般的に使用されます。
シンプルアナライザー
データを小文字で索引付けし、文字以外に基づいて分割します。 URLや、記号や数字などの文字以外の文字にはインデックスを付けません。
アナライザーを停止します
ストップアナライザは、文字以外の文字とストップワードに従ってデータからトークンを生成します。 ストップワードは、アナライザーがスキャンスルーに無関係であると見なすため、インデックス作成中に無視されることになっているワードです。 さらに、ストップアナライザは、URLや、記号や数字などの文字以外の文字のインデックスを作成しません。
以下の文を考えてみましょう。
これは、「DistributedLucene」のチュートリアルです。 alachisoft。com。
ホワイトスペースアナライザー | アナライザーを停止します | シンプルアナライザー | 標準アナライザー |
---|---|---|---|
この is a チュートリアル for 「DistributedLucene」 at alachisoft。com。 |
チュートリアル 分散ルセン alachisoft コム |
この is a チュートリアル for 「分散ルセン」 alachisoft コム |
チュートリアル 分散ルセン alachisoft.COM |
インデックスライター
ドキュメントを追加してインデックスを作成するには、 IndexWriter
。 ライターのニーズ:
有効なLuceneディレクトリ:ドキュメントのインデックスが作成される場所
アナライザー:ライターがそれに応じてデータを分析するようにします。
Writerは、インデックス付けされたデータのアナライザーに対応し、データを格納するために結果をディレクトリに追加します。 正確には、ライターは、すべての書き込み操作がデータに対して正しく実行され、データを保存する責任があります。 ライターで実行できる一連の操作があり、ライターはすべての操作の後に破棄されます。
インデックスリーダー
Luceneの主な機能は、以前に追加されたデータを検索することです。 この目的のために私たちは IndexReader
ディレクトリからデータを読み取ります。 ドキュメントの更新ごとに IndexReader
再初期化する必要があります。 作成することができます IndexReader
またはのインスタンスを取得します IndexReader
IndexWriter
。 ディレクトリインスタンスを、すべてのドキュメントにインデックスが付けられているリーダーに渡します。
インデックスサーチャー
IndexSearcher
のインスタンスで初期化されます
IndexReader
これは、ユーザーからクエリを受け取り、それに応じてデータを検索します。 クエリはLuceneによって提供される抽象クラスであり、実行する検索のスコープとタイプを定義するために使用されます。 検索すると、 TopDocs
これは、クエリで検索した結果です。
クエリが作成されたので、次を使用してクエリを解析します。 QueryParser
。 アナライザーはqueryParserに渡され、queryParserはそのアナライザーに従ってクエリを解析します。 さらに、ドキュメントに追加されたフィールド名がクエリサーチャーに渡され、それに応じてデータが検索されます。
配列はで維持されます topDocs
として知られています scoreDocs
. ScoreDocs
クエリ実行ベースで検索結果を維持します。 この配列を反復処理すると、結果のデータを取得できます。
おすすめ:検索に使用するアナライザーは、最初にデータのインデックスが作成されたものと同じであることが推奨されます。
も参照してください
Luceneと NCache
Luceneクエリインデックスを設定する
キャッシュ内のSQL検索
LINQでキャッシュを検索