【プロジェクトコンバット】Lucene API入門

1. 検索エンジンのフレームワーク

Lucene と solr の違いは何ですか? いつ使用されますか?
まず、Solr は Lucene をベースにしています。Lucene は情報検索ツールキットですが、検索エンジン システムは含まれていません。インデックス構造、インデックスの読み書きツール、相関ツール、並べ替えなどの機能が含まれています。 Lucene さん、データの取得、解析、単語の分割などの検索エンジン システムに注意を払う必要があります。

Solr の目標は、エンタープライズ レベルの検索エンジン システムを作成することであるため、私たちが認識している検索エンジン システムに近いものになります。これは検索エンジン サービスです。さまざまな API を通じて、アプリケーションは検索ロジックを必要とせずに検索サービスを使用できます。アプリケーションに結合されます。さらに、Solr は設定ファイルに従ってデータ分析の方法を定義でき、これは検索フレームワークに似ており、マスター/スレーブやホットスワップデータベースなどの操作もサポートします。また、Piaohong や facet などの検索エンジンの共通機能のサポートも追加されます。

したがって、Lucene はより柔軟に使用できますが、検索エンジンのシステム アーキテクチャやその他の追加機能の実装は自分で処理する必要があります。Solr はさらに多くの機能を提供しますが、これは高レベルのフレームワークです。Lucene の多くの新機能は、時間内に透過的にアップロードすることができないため、機能が必要になる場合があります。Lucene はそれをサポートしていますが、 Solr 上の関連インターフェイス。

2. Lucene と Solr の説明

Lucene と Solr を初めて使用する多くの人は、「Lucene と Solr を使用するべきですか?」という明白な質問をするでしょう。答えは簡単です。この質問を自問している場合、99% の状況で、使用したいのは Solr です。 Solr と Lucene の関係を概念化する方法は、車とそのエンジンの関係です。エンジンを運転することはできませんが、車を運転することはできます。同様に、Lucene はそのままでは使用できないプログラム ライブラリですが、Solr はすぐに使用できる完全なアプリケーションです。人々が望むものを作りましょう。

3. 詳しい説明

Lucene は SDK に似ています。完全な API ファミリと対応する実装があります。これらを使用して、独自のアプリケーションに高度なクエリ (転置インデックス テクノロジに基づく) を実装できます。Lucene は、スタンドアロン アプリケーションやデスクトップ アプリケーションにとって非常に実用的で便利です。しかし、Lucene では開発者自身がインデックス ファイルを保守する必要があり、マルチマシン環境でインデックス ファイルのバックアップや同期を行うのは非常に面倒です。そこで、Solrがあります。Solr は、HTTP インターフェイスを備えた Lucene ベースのクエリ サーバーであり、多くの Lucene の詳細をカプセル化します。独自のアプリケーションは、.../solr?q=abc などの HTTP GET/POST リクエストを直接使用して、インデックスのクエリ、維持、変更を行うことができます。たとえば、Lucene には、最下層からデータベースを構築できるようにするためのパッケージが多数用意されています。Solr は、適切に実装されたデータベース プログラムであり、インストール後すぐに使用できます。

4. 比較

Lucene は検索エンジンであり、Java ライブラリであり、あらゆるアプリケーション (もちろん solr を含む) で使用できる Java API を提供します。 Solr は、Lucene の http ラッパーに基づく検索サーバーです (この記述は正確ではありませんが、solr他の多くの機能も提供します)。http apisolr が Lucene に依存している場合、その目的は、より使いやすくすることです。主な競合他社は elasticsearch であり、elasticsearch も Lucene の solr に基づいており、nutch と組み合わせて使用​​されることが多いです。

1. Lucene API の 5 つの基本クラス

ドキュメントのインデックスを作成するために、Lucene は 5 つの基本クラスを提供します

  • 書類
  • 分野
  • インデックスライター
  • アナライザ
  • ディレクトリ

1.1 文書

  • 文書を説明するために使用される
  • ドキュメントは、HTML ページ、電子メール、またはテキスト ファイルを参照できます。
  • Document オブジェクトは複数の Field オブジェクトで構成されます。
  • Document オブジェクト = データベース内のレコード、各 Field オブジェクト = レコードのフィールド。

1.2 フィールド

  • 文書のプロパティを記述するために使用されます
  • たとえば、電子メールのタイトルと内容は 2 つの Field オブジェクトで記述できます。

1.3 アナライザー

  • ドキュメントにインデックスを付ける前に、まずドキュメントのコンテンツを単語単位で分割する必要があり、この部分の作業は Analyzer によって実行されます。
  • Analyzer クラスは、複数の実装を持つ抽象クラスです。
  • さまざまな言語やアプリケーションに適したアナライザーを選択してください。
  • Analyzer は単語で分割されたコンテンツを IndexWriter に送信してインデックスを構築します。

1.4 インデックスライター

  • Lucene がインデックスを作成するために使用するコア クラス
  • 機能: 各 Document オブジェクトをインデックスに追加します。

1.5 ディレクトリ

  • Lucene のインデックスの保存場所
  • 現在 2 つの実装がある抽象クラス

[x] 1 つ目は FSDirectory で、ファイル システムに格納されているインデックスの場所を表します。
[x] 2 つ目は RAMDirectory で、メモリに格納されているインデックスの場所を表します。

2. Lucene APIのクエリクラス

これは、TermQuery、BooleanQuery、PrefixQuery などの複数の実装を備えた抽象クラスです。
このクラスの目的は、ユーザーが入力したクエリ文字列を Lucene が認識できるクエリにカプセル化することです。

3. Lucene API の IndexSearcher

検索は確立されたインデックスに対して実行されます。
インデックスは読み取り専用でのみ開くことができるため、インデックスに対して複数の IndexSearcher インスタンスが動作する可能性があります。

4. Lucene API のヒット

検索結果を保存する

おすすめ

転載: blog.csdn.net/wstever/article/details/129655667