Apache Solr-데이터 인덱싱

일반적으로 indexing문서 또는 (다른 엔티티)를 체계적으로 배열하는 것입니다. 인덱싱을 통해 사용자는 문서에서 정보를 찾을 수 있습니다.

  • 인덱싱은 문서를 수집, 구문 분석 및 저장합니다.

  • 인덱싱은 필요한 문서를 찾는 동안 검색 쿼리의 속도와 성능을 높이기 위해 수행됩니다.

Apache Solr에서 인덱싱

Apache Solr에서는 xml, csv, pdf 등과 같은 다양한 문서 형식을 인덱싱 (추가, 삭제, 수정) 할 수 있습니다. Solr 인덱스에는 여러 가지 방법으로 데이터를 추가 할 수 있습니다.

이 장에서 우리는 인덱싱에 대해 논의 할 것입니다.

  • Solr 웹 인터페이스 사용.
  • Java, Python 등과 같은 클라이언트 API 사용
  • 사용 post tool.

이 장에서는 다양한 인터페이스 (명령 줄, 웹 인터페이스 및 Java 클라이언트 API)를 사용하여 Apache Solr의 인덱스에 데이터를 추가하는 방법에 대해 설명합니다.

사후 명령을 사용하여 문서 추가

Solr은 post 그것의 명령 bin/예배 규칙서. 이 명령을 사용하면 Apache Solr에서 JSON, XML, CSV와 같은 다양한 형식의 파일을 인덱싱 할 수 있습니다.

찾아보기 bin Apache Solr의 디렉토리를 열고 –h option 다음 코드 블록에 표시된대로 post 명령의.

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

위의 명령을 실행하면 옵션 목록이 표시됩니다. post command, 아래 그림과 같이.

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 예배 규칙서).

학생 아이디 이름 Lasst 이름 전화 시티
001 Rajiv 레디 9848022337 하이데라바드
002 Siddharth Bhattacharya 9848022338 콜카타
003 Rajesh Khanna 9848022339 델리
004 Preethi Agarwal 9848022330 푸네
005 Trupthi Mohanty 9848022336 부바 네슈와 르
006 Archana 미 슈라 9848022335 첸나이

위의 데이터 세트에는 학생 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

이 데이터를 sample_Solr 사용 post 다음과 같이 명령-

[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 웹 UI의 홈페이지를 방문하십시오-

http://localhost:8983/

핵심 선택 Solr_sample. 기본적으로 요청 핸들러는/select쿼리는 ":"입니다. 수정하지 않고ExecuteQuery 페이지 하단의 버튼을 클릭합니다.

쿼리를 실행할 때 다음 스크린 샷에 표시된대로 JSON 형식 (기본값)으로 인덱싱 된 CSV 문서의 내용을 관찰 할 수 있습니다.

Note − 같은 방식으로 JSON, XML, CSV 등과 같은 다른 파일 형식을 인덱싱 할 수 있습니다.

Solr 웹 인터페이스를 사용하여 문서 추가

Solr에서 제공하는 웹 인터페이스를 사용하여 문서를 색인화 할 수도 있습니다. 다음 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 웹 인터페이스를 엽니 다.

http://localhost:8983/

Step 2

핵심 선택 Solr_sample. 기본적으로 Request Handler, Common Within, Overwrite 및 Boost 필드의 값은 다음 스크린 샷과 같이 각각 / update, 1000, true 및 1.0입니다.

이제 JSON, CSV, XML 등에서 원하는 문서 형식을 선택합니다. 텍스트 영역에 인덱싱 할 문서를 입력하고 Submit Document 다음 스크린 샷과 같이 버튼을 클릭합니다.

Java Client 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