Apache-solr-indexing-data

提供:Dev Guides
移動先:案内検索

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オプション*を実行します。

[Hadoop@localhost bin]$ cd $SOLR_HOME
[Hadoop@localhost bin]$ ./post -h

上記のコマンドを実行すると、以下に示すように、* postコマンド*のオプションのリストが表示されます。

Usage: post -c <collection> [OPTIONS] <files|directories|urls|-d [".."]>
or post –help
   collection name defaults to DEFAULT_SOLR_COLLECTION if not specified
OPTIONS
=======
Solr options:
   -url <base Solr update URL> (overrides collection, host, and port)
   -host <host> (default: localhost)
   -p or -port <port> (default: 8983)
   -commit yes|no (default: yes)

Web crawl options:
   -recursive <depth> (default: 1)
   -delay <seconds> (default: 10)

Directory crawl options:
   -delay <seconds> (default: 0)

stdin/args options:
   -type <content/type> (default: application/xml)

Other options:
   -filetypes <type>[,<type>,...] (default:
   xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,
   rtf,htm,html,txt,log)
   -params "<key> = <value>[&<key> = <value>...]" (values must be
   URL-encoded; these pass through to Solr update request)
   -out yes|no (default: no; yes outputs Solr response to console)
   -format Solr (sends application/json content as Solr commands
   to/update instead of/update/json/docs)

Examples:
* JSON file:./post -c wizbang events.json
* XML files: ./post -c records article*.xml
* CSV file: ./post -c signals LATEST-signals.csv
* Directory of files: ./post -c myfiles ~/Documents
* Web crawl: ./post -c gettingstarted http://lucene.apache.org/Solr -recursive 1 -delay 1
* Standard input (stdin): echo '{commit: {}}' | ./post -c my_collection -
type application/json -out yes –d
* Data as string: ./post -c signals -type text/csv -out yes -d $'id,value\n1,0.47'

次の内容を持つ 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ファイルを以下に示します。 ここでは、スキーマに言及し、その最初の行を文書化する必要があることに注意する必要があります。

id,    first_name,   last_name,   phone_no,      location
001,   Pruthvi,      Reddy,       9848022337,    Hyderabad
002,   kasyap,       Sastry,      9848022338,    Vishakapatnam
003,   Rajesh,       Khanna,      9848022339,    Delhi
004,   Preethi,      Agarwal,     9848022330,    Pune
005,   Trupthi,      Mohanty,     9848022336,    Bhubaneshwar
006,   Archana,      Mishra,      9848022335,    Chennai

次のように post コマンドを使用して、 sample_Solr という名前のコアの下でこのデータにインデックスを付けることができます-

[Hadoop@localhost bin]$ ./post -c Solr_sample sample.csv

上記のコマンドを実行すると、指定されたドキュメントは指定されたコアの下でインデックス付けされ、次の出力が生成されます。

/home/Hadoop/java/bin/java -classpath/home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = Solr_sample -Ddata = files
org.apache.Solr.util.SimplePostTool sample.csv
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/Solr/Solr_sample/update...
Entering auto mode. File endings considered are
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,
htm,html,txt,log
POSTing file sample.csv (text/csv) to [base]
1 files indexed.
COMMITting Solr index changes to
http://localhost:8983/Solr/Solr_sample/update...
Time spent: 0:00:00.228

次のURLを使用してSolr Web UIのホームページにアクセスします-

*http://localhost:8983/*

コア Solr_sample を選択します。 デフォルトでは、リクエストハンドラは /select で、クエリは「:」です。 変更を行わずに、ページの下部にある ExecuteQuery ボタンをクリックします。

Solrサンプル

次のスクリーンショットに示すように、クエリの実行時に、JSON形式(デフォルト)でインデックス付けされたCSVドキュメントの内容を確認できます。

CSVドキュメント

-同様に、JSON、XML、CSVなどの他のファイル形式にインデックスを付けることができます。

Solr Webインターフェースを使用した文書の追加

Solrが提供するWebインターフェースを使用して、ドキュメントのインデックスを作成することもできます。 次のJSONドキュメントにインデックスを付ける方法を見てみましょう。

[
   {
      "id" : "001",
      "name" : "Ram",
      "age" : 53,
      "Designation" : "Manager",
      "Location" : "Hyderabad",
   },
   {
      "id" : "002",
      "name" : "Robert",
      "age" : 43,
      "Designation" : "SR.Programmer",
      "Location" : "Chennai",
   },
   {
      "id" : "003",
      "name" : "Rahim",
      "age" : 25,
      "Designation" : "JR.Programmer",
      "Location" : "Delhi",
   }
]

ステップ1

次のURLを使用してSolr Webインターフェースを開きます-

*http://localhost:8983/*

ステップ2

コア Solr_sample を選択します。 デフォルトでは、次のスクリーンショットに示すように、リクエストハンドラ、共通内、上書き、およびブーストの各フィールドの値は、それぞれ/update、1000、true、および1.0です。

リクエストハンドラ

次に、JSON、CSV、XMLなどから必要なドキュメント形式を選択します。 次のスクリーンショットに示すように、テキスト領域にインデックスを作成するドキュメントを入力し、[ドキュメントを送信]ボタンをクリックします。

ドキュメントの送信

JavaクライアントAPIを使用してドキュメントを追加する

以下は、Apache Solrインデックスにドキュメントを追加するJavaプログラムです。 このコードを AddingDocument.java という名前のファイルに保存します。

import java.io.IOException;

import org.apache.Solr.client.Solrj.SolrClient;
import org.apache.Solr.client.Solrj.SolrServerException;
import org.apache.Solr.client.Solrj.impl.HttpSolrClient;
import org.apache.Solr.common.SolrInputDocument;

public class AddingDocument {
   public static void main(String args[]) throws Exception {
     //Preparing the Solr client
      String urlString = "http://localhost:8983/Solr/my_core";
      SolrClient Solr = new HttpSolrClient.Builder(urlString).build();

     //Preparing the Solr document
      SolrInputDocument doc = new SolrInputDocument();

     //Adding fields to the document
      doc.addField("id", "003");
      doc.addField("name", "Rajaman");
      doc.addField("age","34");
      doc.addField("addr","vishakapatnam");

     //Adding the document to Solr
      Solr.add(doc);

     //Saving the changes
      Solr.commit();
      System.out.println("Documents added");
   }
}

端末で次のコマンドを実行して、上記のコードをコンパイルします-

[Hadoop@localhost bin]$ javac AddingDocument
[Hadoop@localhost bin]$ java AddingDocument

上記のコマンドを実行すると、次の出力が得られます。

Documents added