Apache Solr - ข้อมูลการจัดทำดัชนี

โดยทั่วไปแล้ว indexingเป็นการจัดเรียงเอกสารหรือ (หน่วยงานอื่น ๆ ) อย่างเป็นระบบ การจัดทำดัชนีช่วยให้ผู้ใช้สามารถค้นหาข้อมูลในเอกสารได้

  • การจัดทำดัชนีจะรวบรวมแยกวิเคราะห์และจัดเก็บเอกสาร

  • ทำดัชนีเพื่อเพิ่มความเร็วและประสิทธิภาพของคำค้นหาในขณะที่ค้นหาเอกสารที่ต้องการ

การสร้างดัชนีใน Apache Solr

ใน Apache Solr เราสามารถจัดทำดัชนี (เพิ่มลบแก้ไข) รูปแบบเอกสารต่างๆเช่น xml, csv, pdf เป็นต้นเราสามารถเพิ่มข้อมูลลงในดัชนี Solr ได้หลายวิธี

ในบทนี้เราจะพูดถึงการจัดทำดัชนี -

  • การใช้ Solr Web Interface
  • การใช้ไคลเอนต์ API เช่น Java, Python และอื่น ๆ
  • ใช้ post tool.

ในบทนี้เราจะพูดถึงวิธีการเพิ่มข้อมูลลงในดัชนีของ Apache Solr โดยใช้อินเทอร์เฟซต่างๆ (บรรทัดคำสั่งเว็บอินเตอร์เฟสและ Java ไคลเอ็นต์ API)

การเพิ่มเอกสารโดยใช้ Post Command

Solr มีไฟล์ post คำสั่งใน bin/ไดเรกทอรี เมื่อใช้คำสั่งนี้คุณสามารถสร้างดัชนีไฟล์รูปแบบต่างๆเช่น JSON, XML, CSV ใน Apache Solr

เรียกดูไฟล์ 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 ราจีฟ เรดดี้ 9848022337 ไฮเดอราบาด
002 สิทธารถ์ ภัตตาคารยา 9848022338 กัลกัตตา
003 Rajesh คันนา 9848022339 เดลี
004 พรีธี Agarwal 9848022330 ปูน
005 ทรัพฐี Mohanty 9848022336 บูบันเนสชวาร์
006 อรชนา มิชรา 9848022335 เจนไน

ชุดข้อมูลด้านบนประกอบด้วยรายละเอียดส่วนบุคคลเช่นรหัสนักศึกษาชื่อนามสกุลโทรศัพท์และเมือง ไฟล์ 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

ไปที่หน้าแรกของ Solr Web UI โดยใช้ URL ต่อไปนี้ -

http://localhost:8983/

เลือกแกน Solr_sample. โดยค่าเริ่มต้นตัวจัดการคำขอคือ/selectและข้อความค้นหาคือ“:” โดยไม่ต้องทำการแก้ไขใด ๆ ให้คลิกไฟล์ExecuteQuery ที่ด้านล่างของหน้า

ในการดำเนินการสืบค้นคุณสามารถสังเกตเนื้อหาของเอกสาร CSV ที่จัดทำดัชนีในรูปแบบ JSON (ค่าเริ่มต้น) ดังที่แสดงในภาพหน้าจอต่อไปนี้

Note - ในทำนองเดียวกันคุณสามารถสร้างดัชนีรูปแบบไฟล์อื่น ๆ เช่น JSON, XML, CSV และอื่น ๆ

การเพิ่มเอกสารโดยใช้ Solr Web Interface

คุณยังสามารถจัดทำดัชนีเอกสารโดยใช้เว็บอินเตอร์เฟสที่ 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

เปิดเว็บอินเตอร์เฟส Solr โดยใช้ URL ต่อไปนี้ -

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

ต่อไปนี้เป็นโปรแกรม Java เพื่อเพิ่มเอกสารในดัชนี Apache Solr บันทึกรหัสนี้ในไฟล์ที่มีชื่อ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