Apache-solr-quick-guide
Apache Solr-概要
2004年にCNET Networksの会社のWebサイトに検索機能を追加するためにSolrを作成したのは Yonik Seely でした。 2006年1月、Apache Software Foundationの下でオープンソースプロジェクトになりました。 最新バージョンのSolr 6.0は2016年にリリースされ、並列SQLクエリの実行をサポートしています。
SolrはHadoopと一緒に使用できます。 Hadoopは大量のデータを処理するため、Solrはこのような大規模なソースから必要な情報を見つけるのに役立ちます。 検索だけでなく、Solrは保存目的にも使用できます。 他のNoSQLデータベースと同様に、これは*非リレーショナルデータストレージ*および*処理技術*です。
要するに、Solrは、大量のテキスト中心のデータを検索するように最適化された、スケーラブルですぐに展開できる検索/ストレージエンジンです。
Apache Solrの機能
SolrはLuceneのJava APIのラップです。 したがって、Solrを使用すると、Luceneのすべての機能を活用できます。 Solrの最も顕著な特徴のいくつかを見てみましょう-
- Restful API -Solrと通信するには、Javaプログラミングスキルは必須ではありません。 代わりに、安らかなサービスを使用して通信できます。 XML、JSON、.CSVなどのファイル形式でSolrにドキュメントを入力し、同じファイル形式で結果を取得します。
- 全文検索-Solrは、トークン、フレーズ、スペルチェック、ワイルドカード、オートコンプリートなどの全文検索に必要なすべての機能を提供します。
- エンタープライズ対応-組織のニーズに応じて、Solrはスタンドアロン、分散、クラウドなど、あらゆる種類のシステム(大規模または小規模)に展開できます。
- 柔軟で拡張可能-Javaクラスを拡張し、それに応じて構成することにより、Solrのコンポーネントを簡単にカスタマイズできます。
- * NoSQLデータベース*-Solrは、クラスターに沿って検索タスクを分散できるビッグデータスケールのNOSQLデータベースとしても使用できます。
- 管理インターフェイス-Solrは使いやすく、使いやすい、機能を備えたユーザーインターフェイスを提供します。これを使用して、ログの管理、ドキュメントの追加、削除、更新、検索などの可能なタスクをすべて実行できます。
- 高度にスケーラブル-SolrをHadoopで使用しながら、レプリカを追加することで容量を拡張できます。
- テキスト中心および関連性順に並べ替え-Solrは主にテキストドキュメントの検索に使用され、結果はユーザーのクエリとの関連性に従って順番に配信されます。
Luceneとは異なり、Apache Solrでの作業中にJavaプログラミングのスキルは必要ありません。 Luceneが提供していないオートコンプリート機能を備えた検索ボックスを作成するための、すぐに展開できるすばらしいサービスを提供します。 Solrを使用すると、大規模(ビッグデータ)アプリケーション向けに、インデックスのスケーリング、配布、管理を行うことができます。
検索アプリケーションのLucene
Luceneは、シンプルでありながら強力なJavaベースの検索ライブラリです。 任意のアプリケーションで使用して、検索機能を追加できます。 Luceneは、実質的にあらゆる種類のテキストのインデックス作成と検索に使用される、スケーラブルで高性能なライブラリです。 Luceneライブラリは、 Indexing や Searching など、検索アプリケーションに必要なコア操作を提供します。
膨大な量のデータを含むWebポータルがある場合、膨大なデータのプールから関連情報を抽出するために、おそらくポータルに検索エンジンが必要になります。 Luceneは、検索アプリケーションの中心として機能し、インデックス作成と検索に関する重要な操作を提供します。
Apache Solr-検索エンジンの基本
検索エンジンとは、ウェブページ、ニュースグループ、プログラム、画像などのインターネットリソースの巨大なデータベースを指します。 World Wide Web上の情報を見つけるのに役立ちます。
ユーザーは、キーワードまたはフレーズの形式でクエリを検索エンジンに渡すことにより、情報を検索できます。 次に、検索エンジンはデータベースを検索し、関連するリンクをユーザーに返します。
検索エンジンのコンポーネント
一般的に、以下にリストされているように、検索エンジンの3つの基本的なコンポーネントがあります-
- Web Crawler -Webクローラーは、 spiders または bots とも呼ばれます。 Webを横断して情報を収集するソフトウェアコンポーネントです。
- データベース-Web上のすべての情報はデータベースに保存されます。 膨大な量のWebリソースが含まれています。
- 検索インターフェイス-このコンポーネントは、ユーザーとデータベース間のインターフェイスです。 ユーザーがデータベースを検索するのに役立ちます。
検索エンジンはどのように機能しますか?
以下の操作の一部またはすべてを実行するには、検索アプリケーションが必要です。
Step | Title | Description |
---|---|---|
1 | Acquire Raw Content | The very first step of any search application is to collect the target contents on which search is to be conducted. |
2 | Build the document | The next step is to build the document(s) from the raw contents which the search application can understand and interpret easily. |
3 | Analyze the document | Before indexing can start, the document is to be analyzed. |
4 | Indexing the document |
Once the documents are built and analyzed, the next step is to index them so that this document can be retrieved based on certain keys, instead of the whole contents of the document. 索引付けは、本の最後にある索引に似ています。一般的な単語がページ番号とともに表示されるため、本全体を検索するのではなく、これらの単語をすばやく追跡できます。 |
5 | User Interface for Search | Once a database of indexes is ready, then the application can perform search operations. To help the user make a search, the application must provide a user interface where the user can enter text and initiate the search process |
6 | Build Query | Once the user makes a request to search a text, the application should prepare a query object using that text, which can then be used to inquire the index database to get relevant details. |
7 | Search Query | Using the query object, the index database is checked to get the relevant details and the content documents. |
8 | Render Results | Once the required result is received, the application should decide how to display the results to the user using its User Interface. |
次の図をご覧ください。 検索エンジンの機能の全体像を示しています。
これらの基本的な操作とは別に、検索アプリケーションは、管理ユーザーインターフェイスを提供して、管理者がユーザープロファイルに基づいて検索レベルを制御できるようにします。 検索結果の分析は、検索アプリケーションのもう1つの重要かつ高度な側面です。
Apache Solr-Windows環境で
この章では、Windows環境でSolrをセットアップする方法について説明します。 WindowsシステムにSolrをインストールするには、以下の手順に従う必要があります-
- Apache Solrのホームページにアクセスして、ダウンロードボタンをクリックします。
- ミラーの1つを選択して、Apache Solrのインデックスを取得します。 そこから Solr-6.2.0.zip という名前のファイルをダウンロードします。
- ファイルを* downloadsフォルダー*から必要なディレクトリに移動し、解凍します。
Solrファイルをダウンロードし、Cドライブに展開したとします。 そのような場合、次のスクリーンショットに示すようにSolrを開始できます。
インストールを確認するには、ブラウザで次のURLを使用します。
インストールプロセスが成功すると、以下に示すように、Apache Solrユーザーインターフェイスのダッシュボードが表示されます。
Java環境の設定
Javaライブラリを使用してApache Solrと通信することもできます。ただし、Java APIを使用してSolrにアクセスする前に、これらのライブラリのクラスパスを設定する必要があります。
クラスパスの設定
以下に示すように、Solrライブラリー(HBaseの lib フォルダー)のクラスパスを設定します。
これは、Java APIを使用してHBaseにアクセスする際の「クラスが見つかりません」例外を防ぐためです。
Apache Solr-Hadoopについて
SolrはHadoopと一緒に使用できます。 Hadoopは大量のデータを処理するため、Solrはこのような大規模なソースから必要な情報を見つけるのに役立ちます。 このセクションでは、Hadoopをシステムにインストールする方法を理解してください。
Hadoopをダウンロードする
以下に、Hadoopをシステムにダウンロードする手順を示します。
- ステップ1 *-Hadoopのホームページに移動します。 次のリンクを使用できます-https://hadoop.apache.org/[www.hadoop.apache.org/]。 次のスクリーンショットで強調表示されているリンク「リリース」をクリックします。
次のように、Hadoopのさまざまなバージョンのソースおよびバイナリファイルのミラーへのリンクを含む* Apache Hadoopリリース*ページにリダイレクトされます-
- ステップ2 *-Hadoopの最新バージョンを選択し(チュートリアルでは2.6.4です)、*バイナリリンク*をクリックします。 Hadoopバイナリのミラーが利用可能なページに移動します。 これらのミラーのいずれかをクリックして、Hadoopをダウンロードします。
コマンドプロンプトからHadoopをダウンロードする
Linuxターミナルを開き、スーパーユーザーとしてログインします。
次のコードブロックに示すように、Hadoopをインストールする必要があるディレクトリに移動し、以前にコピーしたリンクを使用してファイルをそこに保存します。
Hadoopをダウンロードしたら、次のコマンドを使用して展開します。
Hadoopのインストール
以下に示す手順に従って、 Hadoop を擬似分散モードでインストールします。
ステップ1:Hadoopのセットアップ
次のコマンドを*〜/.bashrc *ファイルに追加することにより、Hadoop環境変数を設定できます。
次に、現在実行中のシステムにすべての変更を適用します。
ステップ2:Hadoopの構成
すべてのHadoop設定ファイルは、「$ HADOOP_HOME/etc/hadoop」の場所にあります。 Hadoopインフラストラクチャに応じて、これらの構成ファイルを変更する必要があります。
JavaでHadoopプログラムを開発するには、 JAVA_HOME 値をシステム内のJavaの場所に置き換えて、 hadoop-env.sh ファイルのJava環境変数をリセットする必要があります。
以下は、Hadoopを設定するために編集する必要があるファイルのリストです-
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml
core-site.xmlを開き、<configuration>、</configuration>タグ内に次のプロパティを追加します。
次のデータを想定します。
このファイルを開き、以下のプロパティを<configuration>、</configuration>タグ内に追加します。
注-上記のファイルでは、すべてのプロパティ値はユーザー定義であり、Hadoopインフラストラクチャに応じて変更できます。
このファイルは、Hadoopに糸を設定するために使用されます。 yarn-site.xmlファイルを開き、このファイルの<configuration>タグと</configuration>タグの間に次のプロパティを追加します。
このファイルは、使用しているMapReduceフレームワークを指定するために使用されます。 デフォルトでは、Hadoopにはyarn-site.xmlのテンプレートが含まれています。 まず、次のコマンドを使用して、 mapred-site、xml.template から mapred-site.xml ファイルにファイルをコピーする必要があります。
Hadoopインストールの検証
次の手順を使用して、Hadoopのインストールを確認します。
ステップ1:ノードのセットアップに名前を付ける
次のようにコマンド「hdfs namenode –format」を使用して、namenodeをセットアップします。
期待される結果は次のとおりです。
ステップ2:Hadoop dfの検証
次のコマンドを使用して、Hadoop dfsを開始します。 このコマンドを実行すると、Hadoopファイルシステムが起動します。
予想される出力は次のとおりです-
ステップ3:糸スクリプトの検証
次のコマンドを使用して、Yarnスクリプトを開始します。 このコマンドを実行すると、Yarnデーモンが起動します。
次のような予想される出力-
ステップ4:ブラウザーでHadoopにアクセスする
Hadoopにアクセスするためのデフォルトのポート番号は50070です。 次のURLを使用して、ブラウザーでHadoopサービスを取得します。
HadoopにSolrをインストールする
以下の手順に従って、Solrをダウンロードしてインストールします。
ステップ1
次のリンクをクリックして、Apache Solrのホームページを開きます-https://lucene.apache.org/solr/
ステップ2
ダウンロードボタン(上のスクリーンショットで強調表示されている)をクリックします。 クリックすると、Apache Solrのさまざまなミラーがあるページにリダイレクトされます。 ミラーを選択してクリックすると、次のスクリーンショットに示すように、Apache Solrのソースファイルとバイナリファイルをダウンロードできるページにリダイレクトされます。
ステップ3
クリックすると、 Solr-6.2.0.tqz という名前のフォルダーがシステムのダウンロードフォルダーにダウンロードされます。 ダウンロードしたフォルダーの内容を抽出します。
ステップ4
以下に示すように、HadoopホームディレクトリにSolrという名前のフォルダーを作成し、抽出したフォルダーの内容をそのフォルダーに移動します。
検証
次のコードブロックに示すように、Solrホームディレクトリの bin フォルダーを参照し、 version オプションを使用してインストールを確認します。
ホームとパスの設定
次のコマンドを使用して .bashrc ファイルを開きます-
次に、Apache Solrのホームディレクトリとパスディレクトリを次のように設定します-
ターミナルを開き、次のコマンドを実行します-
これで、任意のディレクトリからSolrのコマンドを実行できます。
Apache Solr-アーキテクチャ
この章では、Apache Solrのアーキテクチャについて説明します。 次の図は、Apache Solrのアーキテクチャのブロック図を示しています。
Solr Architecture─ビルディングブロック
以下は、Apache Solrの主要な構成要素(コンポーネント)です-
- リクエストハンドラ-Apache Solrに送信するリクエストは、これらのリクエストハンドラによって処理されます。 要求は、クエリ要求またはインデックス更新要求である場合があります。 要件に基づいて、リクエストハンドラを選択する必要があります。 リクエストをSolrに渡すには、通常、ハンドラーを特定のURIエンドポイントにマップし、指定されたリクエストはそれによって処理されます。
- 検索コンポーネント-検索コンポーネントは、Apache Solrで提供される検索のタイプ(機能)です。 スペルチェック、クエリ、ファセット、ヒットの強調表示などです。 これらの検索コンポーネントは、*検索ハンドラー*として登録されます。 複数のコンポーネントを検索ハンドラーに登録できます。
- クエリパーサー-Apache Solrクエリパーサーは、Solrに渡すクエリを解析し、構文エラーのクエリを検証します。 クエリを解析した後、Luceneが理解できる形式に変換します。
- 応答ライタ-Apache Solrの応答ライタは、ユーザークエリ用にフォーマットされた出力を生成するコンポーネントです。 Solrは、XML、JSON、CSVなどの応答形式をサポートしています。 応答のタイプごとに異なる応答ライターがあります。
- Analyzer/tokenizer -Luceneはトークンの形式でデータを認識します。 Apache Solrはコンテンツを分析し、トークンに分割し、これらのトークンをLuceneに渡します。 Apache Solrのアナライザーは、フィールドのテキストを調べ、トークンストリームを生成します。 トークナイザーは、アナライザーによって準備されたトークンストリームをトークンに分割します。
- 更新要求プロセッサ-Apache Solrに更新要求を送信するたびに、要求はプラグインのセット(署名、ロギング、インデックス付け)で実行されます。これは、集合的に*更新要求プロセッサ*と呼ばれます。 このプロセッサは、フィールドのドロップ、フィールドの追加などの変更を行います。
Apache Solr-用語
この章では、Solrでの作業中に頻繁に使用されるいくつかの用語の本当の意味を理解しようとします。
一般的な用語
以下は、Solrセットアップのすべてのタイプで使用される一般的な用語のリストです-
- インスタンス-* tomcatインスタンス*または* jettyインスタンス*と同様に、この用語はJVM内で実行されるアプリケーションサーバーを指します。 Solrのホームディレクトリは、これらの各Solrインスタンスへの参照を提供し、各インスタンスで実行するように1つ以上のコアを構成できます。
- コア-アプリケーションで複数のインデックスを実行しているときに、それぞれが1つのコアを持つ複数のインスタンスの代わりに、各インスタンスに複数のコアを持つことができます。
- ホーム-$ SOLR_HOMEという用語は、コアとそのインデックス、構成、および依存関係に関するすべての情報を含むホームディレクトリを指します。
- Shard -分散環境では、データは複数のSolrインスタンス間で分割され、データの各チャンクは Shard として呼び出すことができます。 インデックス全体のサブセットが含まれています。
SolrCloudの用語
前の章で、Apache Solrをスタンドアロンモードでインストールする方法について説明しました。 Solrをマスタースレーブパターンでインストールする分散モード(クラウド環境)でSolrをインストールすることもできます。 分散モードでは、インデックスはマスターサーバー上に作成され、1つ以上のスレーブサーバーに複製されます。
Solr Cloudに関連する重要な用語は次のとおりです-
- Node -Solrクラウドでは、Solrの各単一インスタンスは node と見なされます。
- クラスタ-環境のすべてのノードを組み合わせて*クラスタ*を作成します。
- コレクション-クラスタには、*コレクション*と呼ばれる論理インデックスがあります。
- シャード-シャードは、インデックスのレプリカを1つ以上持つコレクションの一部です。
- レプリカ-Solr Coreでは、ノードで実行されるシャードのコピーは*レプリカ*として知られています。
- リーダー-シャードのレプリカでもあり、Solr Cloudのリクエストを残りのレプリカに配布します。
- Zookeeper -Solr Cloudが集中管理された構成と調整、クラスターの管理、リーダーの選出に使用するApacheプロジェクトです。
構成ファイル
Apache Solrの主な構成ファイルは次のとおりです-
- Solr.xml -Solr Cloudに関連する情報を含むのは、$ SOLR_HOMEディレクトリ内のファイルです。 コアをロードするために、Solrはこのファイルを参照して、コアの識別に役立ちます。
- Solrconfig.xml -このファイルには、要求の処理と応答のフォーマットに関連する定義とコア固有の構成、インデックスの作成、構成、メモリの管理、コミットの作成が含まれます。
- Schema.xml -このファイルには、フィールドとフィールドタイプとともにスキーマ全体が含まれています。
- Core.properties -このファイルには、コアに固有の構成が含まれています。 コアの名前とデータディレクトリのパスが含まれているため、コアディスカバリ*と呼ばれます。 任意のディレクトリで使用でき、 coreディレクトリ*として扱われます。
Apache Solr-基本コマンド
Solrの開始
Solrをインストールしたら、Solrホームディレクトリの bin フォルダーを参照し、次のコマンドを使用してSolrを起動します。
このコマンドは、バックグラウンドでSolrを開始し、次のメッセージを表示してポート8983でリッスンします。
フォアグラウンドでのSolrの開始
別のポートでSolrを開始する
Solrの停止
このコマンドはSolrを停止し、次のようにメッセージを表示します。
Solrの再起動
Solrの restart コマンドは、Solrを5秒間停止し、再び開始します。 次のコマンドを使用してSolrを再起動できます-
このコマンドはSolrを再起動し、次のメッセージを表示します-
Solr─ヘルプコマンド
Solrの help コマンドを使用して、Solrプロンプトとそのオプションの使用状況を確認できます。
Solr─statusコマンド
Solrのこの status コマンドは、コンピューターで実行中のSolrインスタンスを検索および検索するために使用できます。 バージョン、メモリ使用量など、Solrインスタンスに関する情報を提供できます。
次のようにstatusコマンドを使用して、Solrインスタンスのステータスを確認できます-
実行すると、上記のコマンドは次のようにSolrのステータスを表示します-
Solr管理者
Apache Solrを起動した後、次のURLを使用して* Solr Webインターフェース*のホームページにアクセスできます。
Solr Adminのインターフェースは次のように表示されます-
Apache Solr-コア
Solr Coreは、使用に必要なすべてのSolr構成ファイルを含むLuceneインデックスの実行中のインスタンスです。 インデックス作成や分析などの操作を実行するには、Solr Coreを作成する必要があります。
Solrアプリケーションには、1つまたは複数のコアが含まれる場合があります。 必要に応じて、Solrアプリケーションの2つのコアが相互に通信できます。
コアを作成する
Solrをインストールして開始したら、Solrのクライアント(Webインターフェース)に接続できます。
次のスクリーンショットで強調されているように、最初はApache Solrにコアはありません。 次に、Solrでコアを作成する方法を見ていきます。
createコマンドを使用する
コアを作成する1つの方法は、以下に示すように、 create コマンドを使用して*スキーマレスコア*を作成することです-
ここでは、Apache Solrで Solr_sample という名前のコアを作成しようとしています。 このコマンドは、次のメッセージを表示するコアを作成します。
Solrで複数のコアを作成できます。 次のスクリーンショットに示すように、Solr Adminの左側に、新しく作成されたコアを選択できる*コアセレクタ*があります。
create_coreコマンドを使用する
または、 create_core コマンドを使用してコアを作成できます。 このコマンドには次のオプションがあります-
–c *core_name * | Name of the core you wanted to create |
-p* port_name * | Port at which you want to create the core |
-d* conf_dir* | Configuration directory of the port |
実行すると、上記のコマンドは次のメッセージを表示するコアを作成します-
コアを削除する
Apache Solrの delete コマンドを使用して、コアを削除できます。 次のスクリーンショットに示すように、Solrに my_core という名前のコアがあるとします。
次のようにコアの名前をこのコマンドに渡すことにより、 delete コマンドを使用してこのコアを削除できます-
上記のコマンドを実行すると、指定されたコアが削除され、次のメッセージが表示されます。
SolrのWebインターフェースを開いて、コアが削除されたかどうかを確認できます。
Apache Solr-データのインデックス作成
一般に、*インデックス作成*は、ドキュメントまたは(他のエンティティ)の体系的な配置です。 インデックス作成により、ユーザーはドキュメント内の情報を見つけることができます。
- インデックス作成は、ドキュメントを収集、解析、保存します。
- インデックスを作成して、必要なドキュメントを見つけながら検索クエリの速度とパフォーマンスを向上させます。
Apache Solrのインデックス作成
Apache Solrでは、xml、csv、pdfなどのさまざまなドキュメント形式のインデックスを作成(追加、削除、変更)できます。 いくつかの方法でSolrインデックスにデータを追加できます。
この章では、インデックス作成について説明します-
- Solr Webインターフェースの使用。
- Java、PythonなどのクライアントAPIを使用する
- *投稿ツール*を使用します。
この章では、さまざまなインターフェイス(コマンドライン、Webインターフェイス、およびJavaクライアントAPI)を使用してApache Solrのインデックスにデータを追加する方法について説明します。
Postコマンドを使用してドキュメントを追加する
Solrの bin/ ディレクトリには post コマンドがあります。 このコマンドを使用すると、Apache SolrでJSON、XML、CSVなどのさまざまな形式のファイルにインデックスを付けることができます。
次のコードブロックに示すように、Apache Solrの bin ディレクトリを参照して、postコマンドの* –hオプション*を実行します。
上記のコマンドを実行すると、以下に示すように、* postコマンド*のオプションのリストが表示されます。
例
次の内容を持つ sample.csv という名前のファイルがあると仮定します( bin ディレクトリ内)。
Student ID | First Name | Lasst Name | Phone | City |
---|---|---|---|---|
001 | Rajiv | Reddy | 9848022337 | Hyderabad |
002 | Siddharth | Bhattacharya | 9848022338 | Kolkata |
003 | Rajesh | Khanna | 9848022339 | Delhi |
004 | Preethi | Agarwal | 9848022330 | Pune |
005 | Trupthi | Mohanty | 9848022336 | Bhubaneshwar |
006 | Archana | Mishra | 9848022335 | Chennai |
上記のデータセットには、学生ID、名、姓、電話、市などの個人情報が含まれています。 データセットのCSVファイルを以下に示します。 ここでは、スキーマに言及し、その最初の行を文書化する必要があることに注意する必要があります。
次のように post コマンドを使用して、 sample_Solr という名前のコアの下でこのデータにインデックスを付けることができます-
上記のコマンドを実行すると、指定されたドキュメントは指定されたコアの下でインデックス付けされ、次の出力が生成されます。
次のURLを使用してSolr Web UIのホームページにアクセスします-
コア Solr_sample を選択します。 デフォルトでは、リクエストハンドラは /select で、クエリは「:」です。 変更を行わずに、ページの下部にある ExecuteQuery ボタンをクリックします。
次のスクリーンショットに示すように、クエリの実行時に、JSON形式(デフォルト)でインデックス付けされたCSVドキュメントの内容を確認できます。
注-同様に、JSON、XML、CSVなどの他のファイル形式にインデックスを付けることができます。
Solr Webインターフェースを使用した文書の追加
Solrが提供するWebインターフェースを使用して、ドキュメントのインデックスを作成することもできます。 次のJSONドキュメントにインデックスを付ける方法を見てみましょう。
ステップ1
次のURLを使用してSolr Webインターフェースを開きます-
ステップ2
コア Solr_sample を選択します。 デフォルトでは、次のスクリーンショットに示すように、リクエストハンドラ、共通内、上書き、およびブーストの各フィールドの値は、それぞれ/update、1000、true、および1.0です。
次に、JSON、CSV、XMLなどから必要なドキュメント形式を選択します。 次のスクリーンショットに示すように、テキスト領域にインデックスを作成するドキュメントを入力し、[ドキュメントを送信]ボタンをクリックします。
JavaクライアントAPIを使用してドキュメントを追加する
以下は、Apache Solrインデックスにドキュメントを追加するJavaプログラムです。 このコードを AddingDocument.java という名前のファイルに保存します。
端末で次のコマンドを実行して、上記のコードをコンパイルします-
上記のコマンドを実行すると、次の出力が得られます。
Apache Solr-ドキュメントの追加(XML)
前の章では、JSONおよび.CSVファイル形式のSolrにデータを追加する方法について説明しました。 この章では、XMLドキュメント形式を使用してApache Solrインデックスにデータを追加する方法を示します。
サンプルデータ
XMLファイル形式を使用して次のデータをSolrインデックスに追加する必要があるとします。
Student ID | First Name | Last Name | Phone | City |
---|---|---|---|---|
001 | Rajiv | Reddy | 9848022337 | Hyderabad |
002 | Siddharth | Bhattacharya | 9848022338 | Kolkata |
003 | Rajesh | Khanna | 9848022339 | Delhi |
004 | Preethi | Agarwal | 9848022330 | Pune |
005 | Trupthi | Mohanty | 9848022336 | Bhubaneshwar |
006 | Archana | Mishra | 9848022335 | Chennai |
XMLを使用したドキュメントの追加
上記のデータをSolrインデックスに追加するには、以下に示すようにXMLドキュメントを準備する必要があります。 このドキュメントを sample.xml という名前のファイルに保存します。
ご覧のとおり、データをインデックスに追加するために記述されたXMLファイルには、<add> </add>、<doc> </doc>、および<field> </field>という3つの重要なタグが含まれています。
- 追加-これは、ドキュメントをインデックスに追加するためのルートタグです。 追加される1つ以上のドキュメントが含まれています。
- doc -追加するドキュメントは、<doc> </doc>タグで囲む必要があります。 このドキュメントには、フィールドの形式でデータが含まれています。
- フィールド-フィールドタグは、ドキュメントのフィールドの名前と値を保持します。
ドキュメントを準備した後、前の章で説明した方法のいずれかを使用して、このドキュメントをインデックスに追加できます。
XMLファイルがSolrの bin ディレクトリに存在し、 my_core という名前のコアでインデックス付けされると仮定し、次のように post ツールを使用してSolrインデックスに追加できます-
上記のコマンドを実行すると、次の出力が得られます。
検証
Apache Solr Webインターフェースのホームページにアクセスして、コア my_core を選択します。 テキスト領域 q にクエリ「:」を渡してすべてのドキュメントを取得し、クエリを実行してください。 実行すると、目的のデータがSolrインデックスに追加されていることがわかります。
Apache Solr-データの更新
XMLを使用してドキュメントを更新する
以下は、既存のドキュメントのフィールドを更新するために使用されるXMLファイルです。 これを update.xml という名前のファイルに保存します。
ご覧のとおり、データを更新するために記述されたXMLファイルは、ドキュメントを追加するために使用するものとまったく同じです。 ただし、唯一の違いは、フィールドの update 属性を使用することです。
この例では、上記のドキュメントを使用し、ID 001 でドキュメントのフィールドを更新しようとします。
XMLドキュメントがSolrの bin ディレクトリに存在するとします。 my_core という名前のコアに存在するインデックスを更新しているため、次のように post ツールを使用して更新できます-
上記のコマンドを実行すると、次の出力が得られます。
検証
Apache Solr Webインターフェースのホームページにアクセスし、コアを my_core として選択します。 テキスト領域 q にクエリ「:」を渡してすべてのドキュメントを取得し、クエリを実行してください。 実行すると、ドキュメントが更新されたことを確認できます。
Javaを使用したドキュメントの更新(クライアントAPI)
以下は、Apache Solrインデックスにドキュメントを追加するJavaプログラムです。 このコードを UpdatingDocument.java という名前のファイルに保存します。
端末で次のコマンドを実行して、上記のコードをコンパイルします-
上記のコマンドを実行すると、次の出力が得られます。
Apache Solr-ドキュメントの削除
ドキュメントを削除する
Apache Solrのインデックスからドキュメントを削除するには、削除するドキュメントのIDを<delete> </delete>タグの間に指定する必要があります。
ここでは、このXMLコードを使用して、IDが 003 および 005 のドキュメントを削除します。 このコードを delete.xml という名前のファイルに保存します。
上記のコマンドを実行すると、次の出力が得られます。
検証
Apache Solr Webインターフェースのホームページにアクセスし、コアを my_core として選択します。 テキスト領域 q にクエリ「:」を渡してすべてのドキュメントを取得し、クエリを実行してください。 実行すると、指定されたドキュメントが削除されたことを確認できます。
フィールドを削除する
ID以外のフィールドに基づいてドキュメントを削除する必要がある場合があります。 たとえば、都市がチェンナイであるドキュメントを削除する必要がある場合があります。
このような場合、<query> </query>タグペア内のフィールドの名前と値を指定する必要があります。
上記のコマンドを実行すると、次の出力が生成されます。
検証
Apache Solr Webインターフェースのホームページにアクセスし、コアを my_core として選択します。 テキスト領域 q にクエリ「:」を渡してすべてのドキュメントを取得し、クエリを実行してください。 実行時に、指定されたフィールド値のペアを含むドキュメントが削除されることを確認できます。
すべての文書を削除する
特定のフィールドを削除するのと同じように、インデックスからすべてのドキュメントを削除する場合は、下に示すように、タグ<query> </query>の間に記号「:」を渡すだけです。
上記のコマンドを実行すると、次の出力が生成されます。
検証
Apache Solr Webインターフェースのホームページにアクセスし、コアを my_core として選択します。 テキスト領域 q にクエリ「:」を渡してすべてのドキュメントを取得し、クエリを実行してください。 実行時に、指定されたフィールド値のペアを含むドキュメントが削除されることを確認できます。
Javaを使用してすべてのドキュメントを削除する(クライアントAPI)
以下は、Apache Solrインデックスにドキュメントを追加するJavaプログラムです。 このコードを UpdatingDocument.java という名前のファイルに保存します。
端末で次のコマンドを実行して、上記のコードをコンパイルします-
上記のコマンドを実行すると、次の出力が得られます。
Apache Solr-データの取得
この章では、JavaクライアントAPIを使用してデータを取得する方法について説明します。 次の内容を持つ sample.csv という名前の.csvドキュメントがあるとします。
以下は、Apache Solrインデックスにドキュメントを追加するJavaプログラムです。 このコードを RetrievingData.java という名前のファイルに保存します。
端末で次のコマンドを実行して、上記のコードをコンパイルします-
上記のコマンドを実行すると、次の出力が得られます。
Apache Solr-データのクエリ
データの保存に加えて、Apache Solrは必要に応じてデータを照会する機能も提供します。 Solrには特定のパラメーターが用意されており、これを使用して、保存されているデータを照会できます。
次の表に、Apache Solrで使用可能なさまざまなクエリパラメーターを示します。
Parameter | Description |
---|---|
q | This is the main query parameter of Apache Solr, documents are scored by their similarity to terms in this parameter. |
fq | This parameter represents the filter query of Apache Solr the restricts the result set to documents matching this filter. |
start | The start parameter represents the starting offsets for a page results the default value of this parameter is 0. |
rows | This parameter represents the number of the documents that are to be retrieved per page. The default value of this parameter is 10. |
sort | This parameter specifies the list of fields, separated by commas, based on which the results of the query is to be sorted. |
fl | This parameter specifies the list of the fields to return for each document in the result set. |
wt | This parameter represents the type of the response writer we wanted to view the result. |
これらすべてのパラメーターは、Apache Solrを照会するためのオプションとして表示できます。 Apache Solrのホームページにアクセスしてください。 ページの左側で、[クエリ]オプションをクリックします。 ここで、クエリのパラメーターのフィールドを確認できます。
レコードの取得
同様に、次のスクリーンショットに示すように、 q を値としてパラメーター q に渡すことにより、インデックスからすべてのレコードを取得できます。
2 ^ nd ^レコードから取得する
次のスクリーンショットに示すように、パラメータとして start に値として2を渡すことにより、2番目のレコードからレコードを取得できます。
レコード数の制限
応答ライタタイプ
パラメーター wt の提供された値から1つを選択することにより、必要な文書タイプで応答を取得できます。
上記の例では、応答を取得するために .csv 形式を選択しました。
フィールドのリスト
結果のドキュメントに特定のフィールドを含める場合は、コンマで区切られた必須フィールドのリストを値としてプロパティ fl に渡す必要があります。
次の例では、フィールドを取得しようとしています-* id、phone、および *first_name 。
Apache Solr-ファセット
Apache Solrのファセットとは、検索結果をさまざまなカテゴリに分類することです。 この章では、Apache Solrで利用可能なファセットの種類について説明します-
- クエリファセット-指定されたクエリにも一致する現在の検索結果のドキュメントの数を返します。
- 日付ファセット-特定の日付範囲内にあるドキュメントの数を返します。
ファセットコマンドは通常のSolrクエリリクエストに追加され、ファセットカウントは同じクエリ応答で返されます。
ファセットクエリの例
フィールド faceting を使用して、すべての用語のカウント、または特定のフィールドの上位の用語のみを取得できます。
例として、さまざまな書籍に関するデータを含む次の books.csv ファイルを考えてみましょう。
上記のコマンドを実行すると、指定された .csv ファイルに記載されているすべてのドキュメントがApache Solrにアップロードされます。
次に、コレクション/コア my_core に0行のフィールド author でファセットクエリを実行します。
Apache SolrのWeb UIを開き、ページの左側で、次のスクリーンショットに示すように、チェックボックス facet をオンにします。
チェックボックスをオンにすると、ファセット検索のパラメーターを渡すために、さらに3つのテキストフィールドがあります。 ここで、クエリのパラメーターとして、次の値を渡します。
最後に、[クエリの実行]ボタンをクリックしてクエリを実行します。
実行すると、次の結果が生成されます。
著者に基づいてインデックス内のドキュメントを分類し、各著者が投稿した書籍の数を指定します。
JavaクライアントAPIを使用したファセット
以下は、Apache Solrインデックスにドキュメントを追加するJavaプログラムです。 このコードを HitHighlighting.java という名前のファイルに保存します。
端末で次のコマンドを実行して、上記のコードをコンパイルします-
上記のコマンドを実行すると、次の出力が得られます。