Apache Solr - Hướng dẫn nhanh

Solr là một nền tảng tìm kiếm mã nguồn mở được sử dụng để xây dựng search applications. Nó được xây dựng trênLucene(công cụ tìm kiếm toàn văn). Solr đã sẵn sàng cho doanh nghiệp, nhanh chóng và có khả năng mở rộng cao. Các ứng dụng được xây dựng bằng Solr rất phức tạp và mang lại hiệu suất cao.

Nó đã Yonik Seelyngười đã tạo ra Solr vào năm 2004 để thêm khả năng tìm kiếm vào trang web của công ty CNET Networks. Vào tháng 1 năm 2006, nó đã được thực hiện một dự án mã nguồn mở của Apache Software Foundation. Phiên bản mới nhất của nó, Solr 6.0, được phát hành vào năm 2016 với hỗ trợ thực hiện các truy vấn SQL song song.

Solr có thể được sử dụng cùng với Hadoop. Vì Hadoop xử lý một lượng lớn dữ liệu, Solr giúp chúng tôi tìm kiếm thông tin cần thiết từ một nguồn lớn như vậy. Không chỉ tìm kiếm, Solr còn có thể được sử dụng cho mục đích lưu trữ. Giống như các cơ sở dữ liệu NoSQL khác, nó là mộtnon-relational data storageprocessing technology.

Tóm lại, Solr là một công cụ tìm kiếm / lưu trữ có thể mở rộng, sẵn sàng triển khai, được tối ưu hóa để tìm kiếm khối lượng lớn dữ liệu tập trung vào văn bản.

Các tính năng của Apache Solr

Solr là một phần bao quanh API Java của Lucene. Do đó, sử dụng Solr, bạn có thể tận dụng tất cả các tính năng của Lucene. Hãy để chúng tôi xem xét một số tính năng nổi bật nhất của Solr -

  • Restful APIs- Để giao tiếp với Solr, không bắt buộc phải có kỹ năng lập trình Java. Thay vào đó, bạn có thể sử dụng các dịch vụ thư giãn để giao tiếp với nó. Chúng tôi nhập tài liệu bằng Solr ở các định dạng tệp như XML, JSON và .CSV và nhận được kết quả ở các định dạng tệp giống nhau.

  • Full text search - Solr cung cấp tất cả các khả năng cần thiết để tìm kiếm toàn văn như mã thông báo, cụm từ, kiểm tra chính tả, ký tự đại diện và tự động hoàn thành.

  • Enterprise ready - Theo nhu cầu của tổ chức, Solr có thể được triển khai trong bất kỳ loại hệ thống nào (lớn hay nhỏ) như độc lập, phân tán, đám mây, v.v.

  • Flexible and Extensible - Bằng cách mở rộng các lớp Java và cấu hình phù hợp, chúng ta có thể tùy chỉnh các thành phần của Solr một cách dễ dàng.

  • NoSQL database - Solr cũng có thể được sử dụng làm cơ sở dữ liệu NOSQL quy mô dữ liệu lớn, nơi chúng ta có thể phân phối các tác vụ tìm kiếm dọc theo một cụm.

  • Admin Interface - Solr cung cấp giao diện người dùng dễ sử dụng, thân thiện với người dùng, hỗ trợ tính năng, sử dụng mà chúng tôi có thể thực hiện tất cả các tác vụ có thể có như quản lý nhật ký, thêm, xóa, cập nhật và tìm kiếm tài liệu.

  • Highly Scalable - Trong khi sử dụng Solr với Hadoop, chúng tôi có thể mở rộng dung lượng của nó bằng cách thêm các bản sao.

  • Text-Centric and Sorted by Relevance - Solr chủ yếu được sử dụng để tìm kiếm tài liệu văn bản và kết quả được phân phối theo mức độ liên quan với truy vấn của người dùng theo thứ tự.

Không giống như Lucene, bạn không cần phải có kỹ năng lập trình Java khi làm việc với Apache Solr. Nó cung cấp một dịch vụ sẵn sàng triển khai tuyệt vời để xây dựng một hộp tìm kiếm có tính năng tự động hoàn thành, điều mà Lucene không cung cấp. Sử dụng Solr, chúng tôi có thể mở rộng quy mô, phân phối và quản lý chỉ mục cho các ứng dụng quy mô lớn (Dữ liệu lớn).

Lucene trong ứng dụng tìm kiếm

Lucene là thư viện tìm kiếm dựa trên Java đơn giản nhưng mạnh mẽ. Nó có thể được sử dụng trong bất kỳ ứng dụng nào để thêm khả năng tìm kiếm. Lucene là một thư viện có khả năng mở rộng và hiệu suất cao được sử dụng để lập chỉ mục và tìm kiếm hầu như bất kỳ loại văn bản nào. Thư viện Lucene cung cấp các hoạt động cốt lõi được yêu cầu bởi bất kỳ ứng dụng tìm kiếm nào, chẳng hạn nhưIndexingSearching.

Nếu chúng ta có một cổng thông tin điện tử với khối lượng dữ liệu khổng lồ, thì chúng tôi có thể sẽ yêu cầu một công cụ tìm kiếm trong cổng của chúng tôi để trích xuất thông tin có liên quan từ nguồn dữ liệu khổng lồ. Lucene hoạt động như trái tim của bất kỳ ứng dụng tìm kiếm nào và cung cấp các hoạt động quan trọng liên quan đến lập chỉ mục và tìm kiếm.

Công cụ Tìm kiếm đề cập đến một cơ sở dữ liệu khổng lồ về các tài nguyên Internet như các trang web, nhóm tin, chương trình, hình ảnh, v.v. Nó giúp định vị thông tin trên World Wide Web.

Người dùng có thể tìm kiếm thông tin bằng cách chuyển các truy vấn vào Công cụ tìm kiếm dưới dạng từ khóa hoặc cụm từ. Sau đó, Công cụ Tìm kiếm sẽ tìm kiếm trong cơ sở dữ liệu của nó và trả về các liên kết có liên quan cho người dùng.

Thành phần công cụ tìm kiếm

Nói chung, có ba thành phần cơ bản của công cụ tìm kiếm như được liệt kê bên dưới:

  • Web Crawler - Trình thu thập thông tin web còn được gọi là spiders hoặc là bots. Nó là một thành phần phần mềm duyệt web để thu thập thông tin.

  • Database- Tất cả thông tin trên Web được lưu trữ trong cơ sở dữ liệu. Chúng chứa một lượng lớn tài nguyên web.

  • Search Interfaces- Thành phần này là một giao diện giữa người dùng và cơ sở dữ liệu. Nó giúp người dùng tìm kiếm thông qua cơ sở dữ liệu.

Công cụ Tìm kiếm hoạt động như thế nào?

Bất kỳ ứng dụng tìm kiếm nào cũng được yêu cầu thực hiện một số hoặc tất cả các thao tác sau.

Bươc Tiêu đề Sự miêu tả

1

Nhận nội dung thô

Bước đầu tiên của bất kỳ ứng dụng tìm kiếm nào là thu thập nội dung mục tiêu mà việc tìm kiếm sẽ được thực hiện.

2

Xây dựng tài liệu

Bước tiếp theo là xây dựng (các) tài liệu từ nội dung thô mà ứng dụng tìm kiếm có thể hiểu và diễn giải dễ dàng.

3

Phân tích tài liệu

Trước khi bắt đầu lập chỉ mục, tài liệu phải được phân tích.

4

Lập chỉ mục tài liệu

Sau khi tài liệu được xây dựng và phân tích, bước tiếp theo là lập chỉ mục chúng để tài liệu này có thể được truy xuất dựa trên các khóa nhất định, thay vì toàn bộ nội dung của tài liệu.

Việc lập chỉ mục tương tự như các chỉ mục mà chúng ta có ở cuối sách, trong đó các từ phổ biến được hiển thị cùng với số trang của chúng để có thể theo dõi những từ này một cách nhanh chóng, thay vì tìm kiếm toàn bộ cuốn sách.

5

Giao diện Người dùng cho Tìm kiếm

Khi cơ sở dữ liệu chỉ mục đã sẵn sàng, ứng dụng có thể thực hiện các thao tác tìm kiếm. Để giúp người dùng thực hiện tìm kiếm, ứng dụng phải cung cấp giao diện người dùng nơi người dùng có thể nhập văn bản và bắt đầu quá trình tìm kiếm

6

Tạo truy vấn

Khi người dùng đưa ra yêu cầu tìm kiếm một văn bản, ứng dụng sẽ chuẩn bị một đối tượng truy vấn bằng cách sử dụng văn bản đó, đối tượng này sau đó có thể được sử dụng để hỏi cơ sở dữ liệu chỉ mục để có được các chi tiết liên quan.

7

Truy vấn tìm kiếm

Sử dụng đối tượng truy vấn, cơ sở dữ liệu chỉ mục được kiểm tra để lấy các chi tiết liên quan và các tài liệu nội dung.

số 8

Kết xuất kết quả

Sau khi nhận được kết quả yêu cầu, ứng dụng sẽ quyết định cách hiển thị kết quả cho người dùng bằng Giao diện người dùng của nó.

Hãy xem hình minh họa sau đây. Nó cho thấy cái nhìn tổng thể về cách Công cụ Tìm kiếm hoạt động.

Ngoài các thao tác cơ bản này, các ứng dụng tìm kiếm cũng có thể cung cấp giao diện quản trị-người dùng để giúp quản trị viên kiểm soát mức độ tìm kiếm dựa trên hồ sơ người dùng. Phân tích kết quả tìm kiếm là một khía cạnh quan trọng và nâng cao khác của bất kỳ ứng dụng tìm kiếm nào.

Trong chương này, chúng ta sẽ thảo luận về cách thiết lập Solr trong môi trường Windows. Để cài đặt Solr trên hệ thống Windows của bạn, bạn cần làm theo các bước dưới đây:

  • Truy cập trang chủ của Apache Solr và nhấp vào nút tải xuống.

  • Chọn một trong các gương để lấy chỉ mục của Apache Solr. Từ đó tải xuống tệp có tênSolr-6.2.0.zip.

  • Di chuyển tệp từ downloads folder vào thư mục cần thiết và giải nén nó.

Giả sử bạn đã tải xuống Solr fie và giải nén nó vào ổ C. Trong trường hợp đó, bạn có thể khởi động Solr như được hiển thị trong ảnh chụp màn hình sau.

Để xác minh cài đặt, hãy sử dụng URL sau trong trình duyệt của bạn.

http://localhost:8983/

Nếu quá trình cài đặt thành công, bạn sẽ thấy bảng điều khiển của giao diện người dùng Apache Solr như hình dưới đây.

Đặt môi trường Java

Chúng ta cũng có thể giao tiếp với Apache Solr bằng các thư viện Java; nhưng trước khi truy cập Solr bằng Java API, bạn cần đặt classpath cho các thư viện đó.

Đặt Classpath

Đặt classpath đến các thư viện Solr trong .bashrctập tin. Mở.bashrc trong bất kỳ trình chỉnh sửa nào như được hiển thị bên dưới.

$ gedit ~/.bashrc

Đặt classpath cho các thư viện Solr (lib trong HBase) như hình dưới đây.

export CLASSPATH = $CLASSPATH://home/hadoop/Solr/lib/*

Điều này là để ngăn ngoại lệ “không tìm thấy lớp” trong khi truy cập HBase bằng Java API.

Solr có thể được sử dụng cùng với Hadoop. Vì Hadoop xử lý một lượng lớn dữ liệu, Solr giúp chúng tôi tìm kiếm thông tin cần thiết từ một nguồn lớn như vậy. Trong phần này, hãy cho chúng tôi hiểu cách bạn có thể cài đặt Hadoop trên hệ thống của mình.

Tải xuống Hadoop

Dưới đây là các bước cần thực hiện để tải Hadoop xuống hệ thống của bạn.

Step 1- Vào trang chủ của Hadoop. Bạn có thể sử dụng liên kết - www.hadoop.apache.org/ . Nhấp vào liên kếtReleases, như được đánh dấu trong ảnh chụp màn hình sau.

Nó sẽ chuyển hướng bạn đến Apache Hadoop Releases trang chứa các liên kết đối chiếu tệp nguồn và tệp nhị phân của các phiên bản Hadoop khác nhau như sau:

Step 2 - Chọn phiên bản mới nhất của Hadoop (trong hướng dẫn của chúng tôi là 2.6.4) và nhấp vào binary link. Nó sẽ đưa bạn đến một trang có sẵn các bản sao cho hệ nhị phân Hadoop. Nhấp vào một trong những bản sao này để tải xuống Hadoop.

Tải xuống Hadoop từ Command Prompt

Mở thiết bị đầu cuối Linux và đăng nhập với tư cách siêu người dùng.

$ su 
password:

Đi tới thư mục mà bạn cần cài đặt Hadoop và lưu tệp ở đó bằng liên kết đã sao chép trước đó, như được hiển thị trong khối mã sau.

# cd /usr/local 
# wget http://redrockdigimark.com/apachemirror/hadoop/common/hadoop-
2.6.4/hadoop-2.6.4.tar.gz

Sau khi tải xuống Hadoop, hãy giải nén nó bằng các lệnh sau.

# tar zxvf hadoop-2.6.4.tar.gz  
# mkdir hadoop 
# mv hadoop-2.6.4/* to hadoop/ 
# exit

Cài đặt Hadoop

Làm theo các bước dưới đây để cài đặt Hadoop trong chế độ phân phối giả.

Bước 1: Thiết lập Hadoop

Bạn có thể đặt các biến môi trường Hadoop bằng cách thêm các lệnh sau vào ~/.bashrc tập tin.

export HADOOP_HOME = /usr/local/hadoop export
HADOOP_MAPRED_HOME = $HADOOP_HOME export
HADOOP_COMMON_HOME = $HADOOP_HOME export 
HADOOP_HDFS_HOME = $HADOOP_HOME export 
YARN_HOME = $HADOOP_HOME 
export HADOOP_COMMON_LIB_NATIVE_DIR = $HADOOP_HOME/lib/native 
export PATH = $PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin 
export HADOOP_INSTALL = $HADOOP_HOME

Tiếp theo, áp dụng tất cả các thay đổi vào hệ thống đang chạy hiện tại.

$ source ~/.bashrc

Bước 2: Cấu hình Hadoop

Bạn có thể tìm thấy tất cả các tệp cấu hình Hadoop ở vị trí “$ HADOOP_HOME / etc / hadoop”. Bắt buộc phải thực hiện các thay đổi trong các tệp cấu hình đó theo cơ sở hạ tầng Hadoop của bạn.

$ cd $HADOOP_HOME/etc/hadoop

Để phát triển các chương trình Hadoop trong Java, bạn phải đặt lại các biến môi trường Java trong hadoop-env.sh tập tin bằng cách thay thế JAVA_HOME giá trị với vị trí của Java trong hệ thống của bạn.

export JAVA_HOME = /usr/local/jdk1.7.0_71

Sau đây là danh sách các tệp mà bạn phải chỉnh sửa để định cấu hình Hadoop:

  • core-site.xml
  • hdfs-site.xml
  • yarn-site.xml
  • mapred-site.xml

core-site.xml

Các core-site.xml tệp chứa thông tin như số cổng được sử dụng cho phiên bản Hadoop, bộ nhớ được cấp phát cho hệ thống tệp, giới hạn bộ nhớ để lưu trữ dữ liệu và kích thước của bộ đệm Đọc / Ghi.

Mở core-site.xml và thêm các thuộc tính sau vào trong các thẻ <configuration>, </configuration>.

<configuration> 
   <property>     
      <name>fs.default.name</name>     
      <value>hdfs://localhost:9000</value>   
   </property> 
</configuration>

hdfs-site.xml

Các hdfs-site.xml tệp chứa thông tin như giá trị của dữ liệu sao chép, namenode con đường, và datanodeđường dẫn của hệ thống tệp cục bộ của bạn. Nó có nghĩa là nơi bạn muốn lưu trữ cơ sở hạ tầng Hadoop.

Hãy để chúng tôi giả sử dữ liệu sau đây.

dfs.replication (data replication value) = 1  

(In the below given path /hadoop/ is the user name. 
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.) 
namenode path = //home/hadoop/hadoopinfra/hdfs/namenode  

(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.) 
datanode path = //home/hadoop/hadoopinfra/hdfs/datanode

Mở tệp này và thêm các thuộc tính sau vào trong các thẻ <configuration>, </configuration>.

<configuration> 
   <property>     
      <name>dfs.replication</name>     
      <value>1</value>   
   </property>  
   
   <property>     
      <name>dfs.name.dir</name>     
      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode</value>   
   </property>  
   
   <property>     
      <name>dfs.data.dir</name>     
      <value>file:///home/hadoop/hadoopinfra/hdfs/datanode</value>   
   </property> 
</configuration>

Note - Trong tệp trên, tất cả các giá trị thuộc tính đều do người dùng xác định và bạn có thể thực hiện thay đổi theo cơ sở hạ tầng Hadoop của mình.

yarn-site.xml

Tệp này được sử dụng để cấu hình sợi thành Hadoop. Mở tệp fiber-site.xml và thêm các thuộc tính sau vào giữa các thẻ <configuration>, </configuration> trong tệp này.

<configuration> 
   <property>     
      <name>yarn.nodemanager.aux-services</name>     
      <value>mapreduce_shuffle</value>   
   </property> 
</configuration>

mapred-site.xml

Tệp này được sử dụng để chỉ định khung MapReduce mà chúng tôi đang sử dụng. Theo mặc định, Hadoop chứa một mẫu sợi-site.xml. Trước hết, cần phải sao chép tệp từmapred-site,xml.template đến mapred-site.xml tập tin bằng lệnh sau.

$ cp mapred-site.xml.template mapred-site.xml

Mở mapred-site.xml và thêm các thuộc tính sau vào trong các thẻ <configuration>, </configuration>.

<configuration> 
   <property>     
      <name>mapreduce.framework.name</name>     
      <value>yarn</value>   
   </property> 
</configuration>

Xác minh cài đặt Hadoop

Các bước sau được sử dụng để xác minh cài đặt Hadoop.

Bước 1: Đặt tên cho thiết lập nút

Thiết lập nút tên bằng lệnh "hdfs namenode –format" như sau.

$ cd ~ 
$ hdfs namenode -format

Kết quả mong đợi như sau.

10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG:   host = localhost/192.168.1.11 
STARTUP_MSG:   args = [-format] STARTUP_MSG:   version = 2.6.4 
... 
... 
10/24/14 21:30:56 INFO common.Storage: Storage directory 
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted. 
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to retain 1 
images with txid >= 0 
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0 
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************ 
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11 
************************************************************/

Bước 2: Xác minh dfs Hadoop

Lệnh sau được sử dụng để khởi động dfs Hadoop. Thực thi lệnh này sẽ khởi động hệ thống tệp Hadoop của bạn.

$ start-dfs.sh

Sản lượng dự kiến ​​như sau:

10/24/14 21:37:56 
Starting namenodes on [localhost] 
localhost: starting namenode, logging to /home/hadoop/hadoop-2.6.4/logs/hadoop-
hadoop-namenode-localhost.out 
localhost: starting datanode, logging to /home/hadoop/hadoop-2.6.4/logs/hadoop-
hadoop-datanode-localhost.out 
Starting secondary namenodes [0.0.0.0]

Bước 3: Xác minh Tập lệnh Sợi

Lệnh sau được sử dụng để bắt đầu tập lệnh Yarn. Thực hiện lệnh này sẽ bắt đầu quỷ Sợi của bạn.

$ start-yarn.sh

Sản lượng dự kiến ​​như sau:

starting yarn daemons 
starting resourcemanager, logging to /home/hadoop/hadoop-2.6.4/logs/yarn-
hadoop-resourcemanager-localhost.out 
localhost: starting nodemanager, logging to /home/hadoop/hadoop-
2.6.4/logs/yarn-hadoop-nodemanager-localhost.out

Bước 4: Truy cập Hadoop trên trình duyệt

Số cổng mặc định để truy cập Hadoop là 50070. Sử dụng URL sau để tải các dịch vụ Hadoop trên trình duyệt.

http://localhost:50070/

Cài đặt Solr trên Hadoop

Làm theo các bước dưới đây để tải xuống và cài đặt Solr.

Bước 1

Mở trang chủ của Apache Solr bằng cách nhấp vào liên kết sau: https://lucene.apache.org/solr/

Bước 2

Nhấn vào download button(được đánh dấu trong ảnh chụp màn hình ở trên). Khi nhấp vào, bạn sẽ được chuyển hướng đến trang nơi bạn có nhiều bản sao Apache Solr. Chọn một nhân bản và nhấp vào nó, thao tác này sẽ chuyển hướng bạn đến một trang nơi bạn có thể tải xuống tệp nguồn và tệp nhị phân của Apache Solr, như được hiển thị trong ảnh chụp màn hình sau.

Bước 3

Khi nhấp vào, một thư mục có tên Solr-6.2.0.tqzsẽ được tải xuống trong thư mục tải xuống của hệ thống của bạn. Giải nén nội dung của thư mục đã tải xuống.

Bước 4

Tạo một thư mục có tên Solr trong thư mục chính Hadoop và di chuyển nội dung của thư mục đã giải nén vào đó, như hình dưới đây.

$ mkdir Solr 
$ cd Downloads 
$ mv Solr-6.2.0 /home/Hadoop/

xác minh

Duyệt qua bin thư mục của Thư mục chính Solr và xác minh cài đặt bằng cách sử dụng version tùy chọn, như được hiển thị trong khối mã sau.

$ cd bin/ 
$ ./Solr version 
6.2.0

Đặt nhà và đường dẫn

Mở .bashrc tập tin bằng lệnh sau:

[Hadoop@localhost ~]$ source ~/.bashrc

Bây giờ đặt thư mục chính và đường dẫn cho Apache Solr như sau:

export SOLR_HOME = /home/Hadoop/Solr  
export PATH = $PATH:/$SOLR_HOME/bin/

Mở thiết bị đầu cuối và thực hiện lệnh sau:

[Hadoop@localhost Solr]$ source ~/.bashrc

Bây giờ, bạn có thể thực hiện các lệnh của Solr từ bất kỳ thư mục nào.

Trong chương này, chúng ta sẽ thảo luận về kiến ​​trúc của Apache Solr. Hình minh họa sau đây cho thấy một sơ đồ khối của kiến ​​trúc của Apache Solr.

Kiến trúc Solr ─ Khối xây dựng

Sau đây là các khối xây dựng (thành phần) chính của Apache Solr:

  • Request Handler- Các yêu cầu chúng tôi gửi đến Apache Solr được xử lý bởi các trình xử lý yêu cầu này. Các yêu cầu có thể là yêu cầu truy vấn hoặc yêu cầu cập nhật chỉ mục. Dựa trên yêu cầu của chúng tôi, chúng tôi cần chọn trình xử lý yêu cầu. Để chuyển một yêu cầu tới Solr, chúng tôi thường ánh xạ trình xử lý tới một điểm cuối URI nhất định và yêu cầu được chỉ định sẽ được nó phục vụ.

  • Search Component- Thành phần tìm kiếm là một loại (tính năng) tìm kiếm được cung cấp trong Apache Solr. Đó có thể là kiểm tra chính tả, truy vấn, phân loại, đánh dấu nhấn, v.v. Các thành phần tìm kiếm này được đăng ký làsearch handlers. Nhiều thành phần có thể được đăng ký cho một trình xử lý tìm kiếm.

  • Query Parser- Trình phân tích cú pháp truy vấn Apache Solr phân tích cú pháp các truy vấn mà chúng tôi chuyển đến Solr và xác minh các truy vấn để tìm lỗi cú pháp. Sau khi phân tích cú pháp các truy vấn, nó sẽ dịch chúng sang định dạng mà Lucene hiểu được.

  • Response Writer- Trình viết phản hồi trong Apache Solr là thành phần tạo ra đầu ra được định dạng cho các truy vấn của người dùng. Solr hỗ trợ các định dạng phản hồi như XML, JSON, CSV, v.v. Chúng tôi có các trình viết phản hồi khác nhau cho từng loại phản hồi.

  • Analyzer/tokenizer- Lucene nhận dạng dữ liệu dưới dạng mã thông báo. Apache Solr phân tích nội dung, chia nó thành các mã thông báo và chuyển các mã thông báo này cho Lucene. Một bộ phân tích trong Apache Solr kiểm tra văn bản của các trường và tạo một dòng mã thông báo. Trình mã hóa phá vỡ dòng mã thông báo do bộ phân tích chuẩn bị thành mã thông báo.

  • Update Request Processor - Bất cứ khi nào chúng tôi gửi một yêu cầu cập nhật đến Apache Solr, yêu cầu đó sẽ được chạy thông qua một tập hợp các plugin (chữ ký, ghi nhật ký, lập chỉ mục), được gọi chung là update request processor. Bộ xử lý này chịu trách nhiệm sửa đổi như bỏ trường, thêm trường, v.v.

Trong chương này, chúng tôi sẽ cố gắng hiểu ý nghĩa thực sự của một số thuật ngữ thường được sử dụng khi làm việc trên Solr.

Thuật ngữ chung

Sau đây là danh sách các thuật ngữ chung được sử dụng cho tất cả các loại thiết lập Solr -

  • Instance - Giống như một tomcat instance hoặc một jetty instance, thuật ngữ này đề cập đến máy chủ ứng dụng, chạy bên trong JVM. Thư mục chính của Solr cung cấp tham chiếu đến từng cá thể Solr này, trong đó một hoặc nhiều lõi có thể được cấu hình để chạy trong từng cá thể.

  • Core - Trong khi chạy nhiều chỉ mục trong ứng dụng của bạn, bạn có thể có nhiều lõi trong mỗi phiên bản, thay vì nhiều phiên bản mỗi phiên bản có một lõi.

  • Home - Thuật ngữ $ SOLR_HOME dùng để chỉ thư mục chính có tất cả thông tin liên quan đến các lõi và chỉ mục, cấu hình và phụ thuộc của chúng.

  • Shard - Trong môi trường phân tán, dữ liệu được phân vùng giữa nhiều cá thể Solr, trong đó mỗi phần dữ liệu có thể được gọi là Shard. Nó chứa một tập hợp con của toàn bộ chỉ mục.

Thuật ngữ SolrCloud

Trong chương trước, chúng ta đã thảo luận về cách cài đặt Apache Solr ở chế độ độc lập. Lưu ý rằng chúng ta cũng có thể cài đặt Solr ở chế độ phân tán (môi trường đám mây) trong đó Solr được cài đặt theo mô hình chủ-tớ. Trong chế độ phân tán, chỉ mục được tạo trên máy chủ chính và nó được sao chép sang một hoặc nhiều máy chủ phụ.

Các thuật ngữ chính liên quan đến Solr Cloud như sau:

  • Node - Trong đám mây Solr, mỗi phiên bản Solr được coi là một node.

  • Cluster - Tất cả các nút của môi trường kết hợp với nhau tạo thành một cluster.

  • Collection - Một cụm có một chỉ mục logic được gọi là collection.

  • Shard - Phân đoạn là một phần của bộ sưu tập có một hoặc nhiều bản sao của chỉ mục.

  • Replica - Trong Solr Core, một bản sao của phân đoạn chạy trong một nút được gọi là replica.

  • Leader - Nó cũng là một bản sao của phân đoạn, phân phối các yêu cầu của Solr Cloud đến các bản sao còn lại.

  • Zookeeper - Đây là một dự án Apache mà Solr Cloud sử dụng để cấu hình và điều phối tập trung, để quản lý cụm và bầu ra người lãnh đạo.

Tệp cấu hình

Các tệp cấu hình chính trong Apache Solr như sau:

  • Solr.xml- Đây là tệp trong thư mục $ SOLR_HOME chứa thông tin liên quan đến Solr Cloud. Để tải các lõi, Solr đề cập đến tệp này, giúp xác định chúng.

  • Solrconfig.xml - Tệp này chứa các định nghĩa và cấu hình cốt lõi cụ thể liên quan đến xử lý yêu cầu và định dạng phản hồi, cùng với lập chỉ mục, cấu hình, quản lý bộ nhớ và thực hiện cam kết.

  • Schema.xml - Tệp này chứa toàn bộ lược đồ cùng với các trường và kiểu trường.

  • Core.properties- Tệp này chứa các cấu hình dành riêng cho lõi. Nó được giới thiệu chocore discovery, vì nó chứa tên của lõi và đường dẫn của thư mục dữ liệu. Nó có thể được sử dụng trong bất kỳ thư mục nào, sau đó sẽ được coi làcore directory.

Bắt đầu Solr

Sau khi cài đặt Solr, hãy duyệt đến bin trong thư mục chính của Solr và khởi động Solr bằng lệnh sau.

[Hadoop@localhost ~]$ cd   
[Hadoop@localhost ~]$ cd Solr/ 
[Hadoop@localhost Solr]$ cd bin/ 
[Hadoop@localhost bin]$ ./Solr start

Lệnh này khởi động Solr trong nền, nghe trên cổng 8983 bằng cách hiển thị thông báo sau.

Waiting up to 30 seconds to see Solr running on port 8983 [\]   
Started Solr server on port 8983 (pid = 6035). Happy searching!

Khởi động Solr ở phía trước

Nếu bạn bắt đầu Solr sử dụng start, sau đó Solr sẽ bắt đầu ở chế độ nền. Thay vào đó, bạn có thể bắt đầu Solr ở nền trước bằng cách sử dụng–f option.

[Hadoop@localhost bin]$ ./Solr start –f  

5823 INFO  (coreLoadExecutor-6-thread-2) [   ] o.a.s.c.SolrResourceLoader 
Adding 'file:/home/Hadoop/Solr/contrib/extraction/lib/xmlbeans-2.6.0.jar' to 
classloader 
5823 INFO  (coreLoadExecutor-6-thread-2) [   ] o.a.s.c.SolrResourceLoader 
Adding 'file:/home/Hadoop/Solr/dist/Solr-cell-6.2.0.jar' to classloader 
5823 INFO  (coreLoadExecutor-6-thread-2) [   ] o.a.s.c.SolrResourceLoader 
Adding 'file:/home/Hadoop/Solr/contrib/clustering/lib/carrot2-guava-18.0.jar' 
to classloader 
5823 INFO  (coreLoadExecutor-6-thread-2) [   ] o.a.s.c.SolrResourceLoader 
Adding 'file:/home/Hadoop/Solr/contrib/clustering/lib/attributes-binder1.3.1.jar' 
to classloader 
5823 INFO  (coreLoadExecutor-6-thread-2) [   ] o.a.s.c.SolrResourceLoader 
Adding 'file:/home/Hadoop/Solr/contrib/clustering/lib/simple-xml-2.7.1.jar' 
to classloader 
…………………………………………………………………………………………………………………………………………………………………………………………………………… 
…………………………………………………………………………………………………………………………………………………………………………………………………. 
12901 INFO  (coreLoadExecutor-6-thread-1) [   x:Solr_sample] o.a.s.u.UpdateLog 
Took 24.0ms to seed version buckets with highest version 1546058939881226240 12902 
INFO  (coreLoadExecutor-6-thread-1) [   x:Solr_sample] 
o.a.s.c.CoreContainer registering core: Solr_sample 
12904 INFO  (coreLoadExecutor-6-thread-2) [   x:my_core] o.a.s.u.UpdateLog Took 
16.0ms to seed version buckets with highest version 1546058939894857728 
12904 INFO  (coreLoadExecutor-6-thread-2) [   x:my_core] o.a.s.c.CoreContainer 
registering core: my_core

Khởi động Solr trên một cổng khác

Sử dụng –p option sau đó start , chúng ta có thể khởi động Solr trong một cổng khác, như được hiển thị trong khối mã sau.

[Hadoop@localhost bin]$ ./Solr start -p 8984  

Waiting up to 30 seconds to see Solr running on port 8984 [-]   
Started Solr server on port 8984 (pid = 10137). Happy searching!

Dừng Solr

Bạn có thể dừng Solr bằng cách sử dụng stop chỉ huy.

$ ./Solr stop

Lệnh này dừng Solr, hiển thị một thông báo như hình dưới đây.

Sending stop command to Solr running on port 8983 ... waiting 5 seconds to 
allow Jetty process 6035 to stop gracefully.

Khởi động lại Solr

Các restartlệnh của Solr dừng Solr trong 5 giây và bắt đầu lại. Bạn có thể khởi động lại Solr bằng lệnh sau:

./Solr restart

Lệnh này khởi động lại Solr, hiển thị thông báo sau:

Sending stop command to Solr running on port 8983 ... waiting 5 seconds to 
allow Jetty process 6671 to stop gracefully. 
Waiting up to 30 seconds to see Solr running on port 8983 [|]  [/]   
Started Solr server on port 8983 (pid = 6906). Happy searching!

Solr ─ Help Command

Các help Lệnh Solr có thể được sử dụng để kiểm tra việc sử dụng dấu nhắc Solr và các tùy chọn của nó.

[Hadoop@localhost bin]$ ./Solr -help  

Usage: Solr COMMAND OPTIONS        
   where COMMAND is one of: start, stop, restart, status, healthcheck, 
create, create_core, create_collection, delete, version, zk  
Standalone server example (start Solr running in the background on port 8984):  
   ./Solr start -p 8984  
SolrCloud example (start Solr running in SolrCloud mode using localhost:2181 
to connect to Zookeeper, with 1g max heap size and remote Java debug options enabled):  
   ./Solr start -c -m 1g -z localhost:2181 -a "-Xdebug -
   Xrunjdwp:transport = dt_socket,server = y,suspend = n,address = 1044"  
Pass -help after any COMMAND to see command-specific usage information,   
such as: ./Solr start -help or ./Solr stop -help

Lệnh trạng thái Solr ─

Điều này statusLệnh Solr có thể được sử dụng để tìm kiếm và tìm ra các phiên bản Solr đang chạy trên máy tính của bạn. Nó có thể cung cấp cho bạn thông tin về một phiên bản Solr như phiên bản của nó, mức sử dụng bộ nhớ, v.v.

Bạn có thể kiểm tra trạng thái của một cá thể Solr, sử dụng lệnh trạng thái như sau:

[Hadoop@localhost bin]$ ./Solr status

Khi thực thi, lệnh trên hiển thị trạng thái của Solr như sau:

Found 1 Solr nodes:   

Solr process 6906 running on port 8983 {   
   "Solr_home":"/home/Hadoop/Solr/server/Solr",   
   "version":"6.2.0 764d0f19151dbff6f5fcd9fc4b2682cf934590c5 - 
   mike - 2016-08-20 05:41:37",   
   "startTime":"2016-09-20T06:00:02.877Z",   
   "uptime":"0 days, 0 hours, 5 minutes, 14 seconds",   
   "memory":"30.6 MB (%6.2) of 490.7 MB"
}

Quản trị viên Solr

Sau khi khởi động Apache Solr, bạn có thể truy cập trang chủ của Solr web interface bằng cách sử dụng URL sau.

Localhost:8983/Solr/

Giao diện của Solr Admin hiện ra như sau:

Solr Core là một phiên bản đang chạy của chỉ mục Lucene chứa tất cả các tệp cấu hình Solr cần thiết để sử dụng nó. Chúng ta cần tạo Solr Core để thực hiện các hoạt động như lập chỉ mục và phân tích.

Một ứng dụng Solr có thể chứa một hoặc nhiều lõi. Nếu cần, hai lõi trong một ứng dụng Solr có thể giao tiếp với nhau.

Tạo lõi

Sau khi cài đặt và khởi động Solr, bạn có thể kết nối với máy khách (giao diện web) của Solr.

Như được đánh dấu trong ảnh chụp màn hình sau, ban đầu không có lõi nào trong Apache Solr. Bây giờ, chúng ta sẽ xem cách tạo lõi trong Solr.

Sử dụng lệnh tạo

Một cách để tạo lõi là tạo schema-less core sử dụng create lệnh, như được hiển thị bên dưới -

[Hadoop@localhost bin]$ ./Solr create -c Solr_sample

Ở đây, chúng tôi đang cố gắng tạo một lõi có tên Solr_sampletrong Apache Solr. Lệnh này tạo ra một lõi hiển thị thông báo sau.

Copying configuration to new core instance directory:
/home/Hadoop/Solr/server/Solr/Solr_sample 

Creating new core 'Solr_sample' using command: 
http://localhost:8983/Solr/admin/cores?action=CREATE&name=Solr_sample&instanceD 
ir = Solr_sample {  
   "responseHeader":{    
      "status":0,    
      "QTime":11550
   },  
   "core":"Solr_sample" 
}

Bạn có thể tạo nhiều lõi trong Solr. Ở phía bên trái của Quản trị viên Solr, bạn có thể thấycore selector nơi bạn có thể chọn lõi mới được tạo, như được hiển thị trong ảnh chụp màn hình sau.

Sử dụng lệnh create_core

Ngoài ra, bạn có thể tạo lõi bằng cách sử dụng create_corechỉ huy. Lệnh này có các tùy chọn sau:

–C core_name Tên của lõi bạn muốn tạo
-p port_name Cổng mà bạn muốn tạo lõi tại đó
-d conf_dir Thư mục cấu hình của cổng

Hãy xem cách bạn có thể sử dụng create_corechỉ huy. Ở đây, chúng tôi sẽ cố gắng tạo một lõi có tênmy_core.

[Hadoop@localhost bin]$ ./Solr create_core -c my_core

Khi thực thi, lệnh trên tạo ra một lõi hiển thị thông báo sau:

Copying configuration to new core instance directory: 
/home/Hadoop/Solr/server/Solr/my_core  

Creating new core 'my_core' using command: 
http://localhost:8983/Solr/admin/cores?action=CREATE&name=my_core&instanceD
ir = my_core {  
   "responseHeader":{  
      "status":0,  
      "QTime":1346
   },  
   "core":"my_core" 
}

Xóa lõi

Bạn có thể xóa lõi bằng cách sử dụng deletelệnh của Apache Solr. Giả sử chúng ta có một lõi có tênmy_core trong Solr, như được hiển thị trong ảnh chụp màn hình sau.

Bạn có thể xóa lõi này bằng cách sử dụng delete lệnh bằng cách chuyển tên lõi cho lệnh này như sau:

[Hadoop@localhost bin]$ ./Solr delete -c my_core

Khi thực hiện lệnh trên, lõi được chỉ định sẽ bị xóa hiển thị thông báo sau.

Deleting core 'my_core' using command: 
http://localhost:8983/Solr/admin/cores?action=UNLOAD&core = my_core&deleteIndex
   = true&deleteDataDir = true&deleteInstanceDir = true  {
   
   "responseHeader" :{    
      "status":0,    
      "QTime":170
   }
}

Bạn có thể mở giao diện web của Solr để xác minh xem lõi đã bị xóa hay chưa.

Nói chung, indexinglà sự sắp xếp các tài liệu hoặc (các thực thể khác) một cách có hệ thống. Lập chỉ mục cho phép người dùng xác định vị trí thông tin trong tài liệu.

  • Lập chỉ mục thu thập, phân tích cú pháp và lưu trữ tài liệu.

  • Lập chỉ mục được thực hiện để tăng tốc độ và hiệu suất của truy vấn tìm kiếm trong khi tìm tài liệu cần thiết.

Lập chỉ mục trong Apache Solr

Trong Apache Solr, chúng ta có thể lập chỉ mục (thêm, xóa, sửa đổi) các định dạng tài liệu khác nhau như xml, csv, pdf, v.v. Chúng ta có thể thêm dữ liệu vào chỉ mục Solr theo một số cách.

Trong chương này, chúng ta sẽ thảo luận về lập chỉ mục -

  • Sử dụng Giao diện Web Solr.
  • Sử dụng bất kỳ API ứng dụng nào như Java, Python, v.v.
  • Sử dụng post tool.

Trong chương này, chúng ta sẽ thảo luận về cách thêm dữ liệu vào chỉ mục của Apache Solr bằng các giao diện khác nhau (dòng lệnh, giao diện web và API ứng dụng khách Java)

Thêm tài liệu bằng Post Command

Solr có một post lệnh trong nó bin/danh mục. Sử dụng lệnh này, bạn có thể lập chỉ mục các định dạng tệp khác nhau như JSON, XML, CSV trong Apache Solr.

Duyệt qua bin thư mục của Apache Solr và thực thi –h option của lệnh đăng, như được hiển thị trong khối mã sau.

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

Khi thực hiện lệnh trên, bạn sẽ nhận được danh sách các tùy chọn của post command, như hình dưới đây.

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'

Thí dụ

Giả sử chúng ta có một tệp có tên sample.csv với nội dung sau (trong bin danh mục).

thẻ học sinh Tên đầu tiên Tên cuối cùng Điện thoại Tp.
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

Tập dữ liệu trên chứa các chi tiết cá nhân như Id sinh viên, tên, họ, điện thoại và thành phố. Tệp CSV của tập dữ liệu được hiển thị bên dưới. Ở đây, bạn phải lưu ý rằng bạn cần đề cập đến lược đồ, ghi lại dòng đầu tiên của nó.

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

Bạn có thể lập chỉ mục dữ liệu này trong lõi có tên sample_Solr sử dụng post lệnh như sau:

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

Khi thực hiện lệnh trên, tài liệu đã cho được lập chỉ mục trong lõi được chỉ định, tạo ra kết quả sau.

/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

Truy cập trang chủ của Solr Web UI bằng cách sử dụng URL sau:

http://localhost:8983/

Chọn lõi Solr_sample. Theo mặc định, trình xử lý yêu cầu là/selectvà truy vấn là “:”. Không thực hiện bất kỳ sửa đổi nào, hãy nhấp vàoExecuteQuery ở cuối trang.

Khi thực hiện truy vấn, bạn có thể quan sát nội dung của tài liệu CSV được lập chỉ mục ở định dạng JSON (mặc định), như được hiển thị trong ảnh chụp màn hình sau.

Note - Theo cách tương tự, bạn có thể lập chỉ mục các định dạng tệp khác như JSON, XML, CSV, v.v.

Thêm tài liệu bằng giao diện web Solr

Bạn cũng có thể lập chỉ mục tài liệu bằng giao diện web do Solr cung cấp. Hãy để chúng tôi xem cách lập chỉ mục tài liệu JSON sau đây.

[ 
   { 
      "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", 
   } 
]

Bước 1

Mở giao diện web Solr bằng URL sau:

http://localhost:8983/

Step 2

Chọn lõi Solr_sample. Theo mặc định, giá trị của các trường Request Handler, Common Within, Overwrite và Boost lần lượt là / update, 1000, true và 1,0, như được hiển thị trong ảnh chụp màn hình sau.

Bây giờ, hãy chọn định dạng tài liệu bạn muốn từ JSON, CSV, XML, v.v. Nhập tài liệu sẽ được lập chỉ mục vào vùng văn bản và nhấp vào Submit Document , như được hiển thị trong ảnh chụp màn hình sau.

Thêm tài liệu bằng Java Client API

Sau đây là chương trình Java để thêm tài liệu vào chỉ mục Apache Solr. Lưu mã này trong một tệp có tênAddingDocument.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"); 
   } 
}

Biên dịch đoạn mã trên bằng cách thực hiện các lệnh sau trong terminal:

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

Khi thực hiện lệnh trên, bạn sẽ nhận được kết quả sau.

Documents added

Trong chương trước, chúng tôi đã giải thích cách thêm dữ liệu vào Solr ở định dạng tệp JSON và .CSV. Trong chương này, chúng tôi sẽ trình bày cách thêm dữ liệu trong chỉ mục Apache Solr bằng định dạng tài liệu XML.

Dữ liệu mẫu

Giả sử chúng ta cần thêm dữ liệu sau vào chỉ mục Solr bằng cách sử dụng định dạng tệp XML.

thẻ học sinh Tên đầu tiên Họ Điện thoại Tp.
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

Thêm tài liệu bằng XML

Để thêm dữ liệu trên vào chỉ mục Solr, chúng ta cần chuẩn bị một tài liệu XML, như hình dưới đây. Lưu tài liệu này trong một tệp có tênsample.xml.

<add> 
   <doc> 
      <field name = "id">001</field> 
      <field name = "first name">Rajiv</field> 
      <field name = "last name">Reddy</field> 
      <field name = "phone">9848022337</field> 
      <field name = "city">Hyderabad</field> 
   </doc>  
   <doc> 
      <field name = "id">002</field> 
      <field name = "first name">Siddarth</field> 
      <field name = "last name">Battacharya</field> 
      <field name = "phone">9848022338</field> 
      <field name = "city">Kolkata</field> 
   </doc>  
   <doc> 
      <field name = "id">003</field> 
      <field name = "first name">Rajesh</field> 
      <field name = "last name">Khanna</field> 
      <field name = "phone">9848022339</field> 
      <field name = "city">Delhi</field> 
   </doc>  
   <doc> 
      <field name = "id">004</field> 
      <field name = "first name">Preethi</field> 
      <field name = "last name">Agarwal</field> 
      <field name = "phone">9848022330</field> 
      <field name = "city">Pune</field> 
   </doc>  
   <doc> 
      <field name = "id">005</field> 
      <field name = "first name">Trupthi</field> 
      <field name = "last name">Mohanthy</field> 
      <field name = "phone">9848022336</field> 
      <field name = "city">Bhuwaeshwar</field> 
   </doc> 
   <doc> 
      <field name = "id">006</field> 
      <field name = "first name">Archana</field> 
      <field name = "last name">Mishra</field> 
      <field name = "phone">9848022335</field> 
      <field name = "city">Chennai</field> 
   </doc> 
</add>

Như bạn có thể quan sát, tệp XML được viết để thêm dữ liệu vào chỉ mục chứa ba thẻ quan trọng là <add> </add>, <doc> </doc> và <field> </ field>.

  • add- Đây là thẻ gốc để thêm tài liệu vào chỉ mục. Nó chứa một hoặc nhiều tài liệu sẽ được thêm vào.

  • doc- Các tài liệu chúng tôi thêm vào phải được bao bọc trong các thẻ <doc> </doc>. Tài liệu này chứa dữ liệu ở dạng trường.

  • field - Thẻ trường chứa tên và giá trị của các trường của tài liệu.

Sau khi chuẩn bị tài liệu, bạn có thể thêm tài liệu này vào chỉ mục bằng bất kỳ phương tiện nào được thảo luận trong chương trước.

Giả sử tệp XML tồn tại trong bin thư mục của Solr và nó sẽ được lập chỉ mục trong lõi có tên my_core, sau đó bạn có thể thêm nó vào chỉ mục Solr bằng cách sử dụng post công cụ như sau -

[Hadoop@localhost bin]$ ./post -c my_core sample.xml

Khi thực hiện lệnh trên, bạn sẽ nhận được kết quả sau.

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-
core6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files 
org.apache.Solr.util.SimplePostTool sample.xml 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/my_core/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.xml (application/xml) to [base] 
1 files indexed. 
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update... 
Time spent: 0:00:00.201

xác minh

Truy cập trang chủ của giao diện web Apache Solr và chọn lõi my_core. Cố gắng truy xuất tất cả các tài liệu bằng cách chuyển truy vấn “:” vào vùng văn bảnqvà thực hiện truy vấn. Khi thực thi, bạn có thể thấy rằng dữ liệu mong muốn được thêm vào chỉ mục Solr.

Cập nhật tài liệu bằng XML

Sau đây là tệp XML được sử dụng để cập nhật một trường trong tài liệu hiện có. Lưu điều này vào một tệp có tênupdate.xml.

<add>   
   <doc>     
      <field name = "id">001</field>     
      <field name = "first name" update = "set">Raj</field>     
      <field name = "last name" update = "add">Malhotra</field>     
      <field name = "phone" update = "add">9000000000</field>    
      <field name = "city" update = "add">Delhi</field>   
   </doc> 
</add>

Như bạn có thể quan sát, tệp XML được viết để cập nhật dữ liệu cũng giống như tệp chúng tôi sử dụng để thêm tài liệu. Nhưng sự khác biệt duy nhất là chúng tôi sử dụngupdate thuộc tính của trường.

Trong ví dụ của chúng tôi, chúng tôi sẽ sử dụng tài liệu trên và cố gắng cập nhật các trường của tài liệu với id 001.

Giả sử tài liệu XML tồn tại trong binthư mục của Solr. Vì chúng tôi đang cập nhật chỉ mục tồn tại trong lõi có tênmy_core, bạn có thể cập nhật bằng cách sử dụng post công cụ như sau -

[Hadoop@localhost bin]$ ./post -c my_core update.xml

Khi thực hiện lệnh trên, bạn sẽ nhận được kết quả sau.

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files 
org.apache.Solr.util.SimplePostTool update.xml 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/my_core/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 update.xml (application/xml) to [base] 
1 files indexed. 
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update... 
Time spent: 0:00:00.159

xác minh

Truy cập trang chủ của giao diện web Apache Solr và chọn cốt lõi là my_core. Cố gắng truy xuất tất cả các tài liệu bằng cách chuyển truy vấn “:” vào vùng văn bảnqvà thực hiện truy vấn. Khi thực thi, bạn có thể thấy rằng tài liệu đã được cập nhật.

Cập nhật tài liệu bằng Java (API ứng dụng khách)

Sau đây là chương trình Java để thêm tài liệu vào chỉ mục Apache Solr. Lưu mã này trong một tệp có tênUpdatingDocument.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.client.Solrj.request.UpdateRequest; 
import org.apache.Solr.client.Solrj.response.UpdateResponse;
import org.apache.Solr.common.SolrInputDocument;  

public class UpdatingDocument { 
   public static void main(String args[]) throws SolrServerException, IOException { 
      //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(); 
   
      UpdateRequest updateRequest = new UpdateRequest();  
      updateRequest.setAction( UpdateRequest.ACTION.COMMIT, false, false);    
      SolrInputDocument myDocumentInstantlycommited = new SolrInputDocument();  
      
      myDocumentInstantlycommited.addField("id", "002"); 
      myDocumentInstantlycommited.addField("name", "Rahman"); 
      myDocumentInstantlycommited.addField("age","27"); 
      myDocumentInstantlycommited.addField("addr","hyderabad"); 
      
      updateRequest.add( myDocumentInstantlycommited);  
      UpdateResponse rsp = updateRequest.process(Solr); 
      System.out.println("Documents Updated"); 
   } 
}

Biên dịch đoạn mã trên bằng cách thực hiện các lệnh sau trong terminal:

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

Khi thực hiện lệnh trên, bạn sẽ nhận được kết quả sau.

Documents updated

Xóa tài liệu

Để xóa tài liệu khỏi chỉ mục của Apache Solr, chúng ta cần chỉ định ID của tài liệu sẽ bị xóa giữa các thẻ <delete> </delete>.

<delete>   
   <id>003</id>   
   <id>005</id> 
   <id>004</id> 
   <id>002</id> 
</delete>

Ở đây, mã XML này được sử dụng để xóa các tài liệu có ID 003005. Lưu mã này trong một tệp có têndelete.xml.

Nếu bạn muốn xóa các tài liệu khỏi chỉ mục thuộc về lõi có tên my_core, sau đó bạn có thể đăng delete.xml tập tin bằng cách sử dụng post như hình bên dưới.

[Hadoop@localhost bin]$ ./post -c my_core delete.xml

Khi thực hiện lệnh trên, bạn sẽ nhận được kết quả sau.

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files 
org.apache.Solr.util.SimplePostTool delete.xml 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/my_core/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 delete.xml (application/xml) to [base] 
1 files indexed. 
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update... 
Time spent: 0:00:00.179

xác minh

Truy cập trang chủ của giao diện web Apache Solr và chọn cốt lõi là my_core. Cố gắng truy xuất tất cả các tài liệu bằng cách chuyển truy vấn “:” vào vùng văn bảnqvà thực hiện truy vấn. Khi thực thi, bạn có thể thấy rằng các tài liệu được chỉ định sẽ bị xóa.

Xóa trường

Đôi khi chúng ta cần xóa tài liệu dựa trên các trường khác ngoài ID. Ví dụ, chúng tôi có thể phải xóa các tài liệu có thành phố là Chennai.

Trong những trường hợp như vậy, bạn cần chỉ định tên và giá trị của trường trong cặp thẻ <query> </query>.

<delete> 
   <query>city:Chennai</query> 
</delete>

Lưu nó thành delete_field.xml và thực hiện thao tác xóa trên lõi có tên my_core sử dụng post công cụ của Solr.

[Hadoop@localhost bin]$ ./post -c my_core delete_field.xml

Khi thực hiện lệnh trên, nó tạo ra kết quả sau.

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files 
org.apache.Solr.util.SimplePostTool delete_field.xml 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/my_core/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 delete_field.xml (application/xml) to [base] 
1 files indexed. 
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update... 
Time spent: 0:00:00.084

xác minh

Truy cập trang chủ của giao diện web Apache Solr và chọn cốt lõi là my_core. Cố gắng truy xuất tất cả các tài liệu bằng cách chuyển truy vấn “:” vào vùng văn bảnqvà thực hiện truy vấn. Khi thực thi, bạn có thể thấy rằng các tài liệu có chứa cặp giá trị trường được chỉ định sẽ bị xóa.

Xóa tất cả tài liệu

Cũng giống như xóa một trường cụ thể, nếu bạn muốn xóa tất cả các tài liệu khỏi một chỉ mục, bạn chỉ cần chuyển ký hiệu “:” vào giữa các thẻ <query> </ query>, như hình dưới đây.

<delete> 
   <query>*:*</query> 
</delete>

Lưu nó thành delete_all.xml và thực hiện thao tác xóa trên lõi có tên my_core sử dụng post công cụ của Solr.

[Hadoop@localhost bin]$ ./post -c my_core delete_all.xml

Khi thực hiện lệnh trên, nó tạo ra kết quả sau.

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files 
org.apache.Solr.util.SimplePostTool deleteAll.xml 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/my_core/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 deleteAll.xml (application/xml) to [base] 
1 files indexed. 
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update... 
Time spent: 0:00:00.138

xác minh

Truy cập trang chủ của giao diện web Apache Solr và chọn cốt lõi là my_core. Cố gắng truy xuất tất cả các tài liệu bằng cách chuyển truy vấn “:” vào vùng văn bảnqvà thực hiện truy vấn. Khi thực thi, bạn có thể thấy rằng các tài liệu có chứa cặp giá trị trường được chỉ định sẽ bị xóa.

Xóa tất cả các tài liệu bằng Java (API ứng dụng khách)

Sau đây là chương trình Java để thêm tài liệu vào chỉ mục Apache Solr. Lưu mã này trong một tệp có tênUpdatingDocument.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 DeletingAllDocuments { 
   public static void main(String args[]) throws SolrServerException, IOException {
      //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();   
          
      //Deleting the documents from Solr 
      Solr.deleteByQuery("*");        
         
      //Saving the document 
      Solr.commit(); 
      System.out.println("Documents deleted"); 
   } 
}

Biên dịch đoạn mã trên bằng cách thực hiện các lệnh sau trong terminal:

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

Khi thực hiện lệnh trên, bạn sẽ nhận được kết quả sau.

Documents deleted

Trong chương này, chúng ta sẽ thảo luận về cách lấy dữ liệu bằng Java Client API. Giả sử chúng ta có một tài liệu .csv có tênsample.csv với nội dung sau.

001,9848022337,Hyderabad,Rajiv,Reddy  
002,9848022338,Kolkata,Siddarth,Battacharya 
003,9848022339,Delhi,Rajesh,Khanna

Bạn có thể lập chỉ mục dữ liệu này trong lõi có tên sample_Solr sử dụng post chỉ huy.

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

Sau đây là chương trình Java để thêm tài liệu vào chỉ mục Apache Solr. Lưu mã này trong một tệp có tênRetrievingData.java.

import java.io.IOException;  

import org.apache.Solr.client.Solrj.SolrClient; 
import org.apache.Solr.client.Solrj.SolrQuery; 
import org.apache.Solr.client.Solrj.SolrServerException; 
import org.apache.Solr.client.Solrj.impl.HttpSolrClient; 
import org.apache.Solr.client.Solrj.response.QueryResponse; 
import org.apache.Solr.common.SolrDocumentList;  

public class RetrievingData { 
   public static void main(String args[]) throws SolrServerException, IOException  { 
      //Preparing the Solr client 
      String urlString = "http://localhost:8983/Solr/my_core"; 
      SolrClient Solr = new HttpSolrClient.Builder(urlString).build();  
      
      //Preparing Solr query 
      SolrQuery query = new SolrQuery();  
      query.setQuery("*:*");  
   
      //Adding the field to be retrieved 
      query.addField("*");  
   
      //Executing the query 
      QueryResponse queryResponse = Solr.query(query);  
   
      //Storing the results of the query 
      SolrDocumentList docs = queryResponse.getResults();    
      System.out.println(docs); 
      System.out.println(docs.get(0)); 
      System.out.println(docs.get(1)); 
      System.out.println(docs.get(2));   
         
      //Saving the operations 
      Solr.commit();         
   } 
}

Biên dịch đoạn mã trên bằng cách thực hiện các lệnh sau trong terminal:

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

Khi thực hiện lệnh trên, bạn sẽ nhận được kết quả sau.

{numFound = 3,start = 0,docs = [SolrDocument{id=001, phone = [9848022337], 
city = [Hyderabad], first_name = [Rajiv], last_name = [Reddy], 
_version_ = 1547262806014820352}, SolrDocument{id = 002, phone = [9848022338], 
city = [Kolkata], first_name = [Siddarth], last_name = [Battacharya], 

_version_ = 1547262806026354688}, SolrDocument{id = 003, phone = [9848022339], 
city = [Delhi], first_name = [Rajesh], last_name = [Khanna], 

_version_ = 1547262806029500416}]} 

SolrDocument{id = 001, phone = [9848022337], city = [Hyderabad], first_name = [Rajiv], 
last_name = [Reddy], _version_ = 1547262806014820352} 

SolrDocument{id = 002, phone = [9848022338], city = [Kolkata], first_name = [Siddarth], 
last_name = [Battacharya], _version_ = 1547262806026354688} 

SolrDocument{id = 003, phone = [9848022339], city = [Delhi], first_name = [Rajesh], 
last_name = [Khanna], _version_ = 1547262806029500416}

Ngoài việc lưu trữ dữ liệu, Apache Solr cũng cung cấp phương tiện truy vấn lại dữ liệu khi được yêu cầu. Solr cung cấp các tham số nhất định bằng cách sử dụng mà chúng tôi có thể truy vấn dữ liệu được lưu trữ trong đó.

Trong bảng sau, chúng tôi đã liệt kê các tham số truy vấn khác nhau có sẵn trong Apache Solr.

Tham số Sự miêu tả
q Đây là tham số truy vấn chính của Apache Solr, các tài liệu được tính điểm bởi sự tương đồng của chúng với các điều khoản trong tham số này.
fq Tham số này đại diện cho truy vấn bộ lọc của Apache Solr hạn chế tập hợp kết quả đối với các tài liệu phù hợp với bộ lọc này.
khởi đầu Tham số bắt đầu thể hiện hiệu số bắt đầu cho một trang kết quả giá trị mặc định của tham số này là 0.
hàng Tham số này đại diện cho số lượng tài liệu sẽ được truy xuất trên mỗi trang. Giá trị mặc định của tham số này là 10.
sắp xếp Tham số này chỉ định danh sách các trường, được phân tách bằng dấu phẩy, dựa vào đó kết quả của truy vấn sẽ được sắp xếp.
fl Tham số này chỉ định danh sách các trường trả về cho mỗi tài liệu trong tập kết quả.
wt Tham số này đại diện cho loại trình viết phản hồi mà chúng tôi muốn xem kết quả.

Bạn có thể xem tất cả các tham số này như là các tùy chọn để truy vấn Apache Solr. Truy cập trang chủ của Apache Solr. Ở phía bên trái của trang, nhấp vào tùy chọn Truy vấn. Tại đây, bạn có thể thấy các trường cho các tham số của truy vấn.

Truy xuất hồ sơ

Giả sử chúng ta có 3 bản ghi trong lõi có tên my_core. Để truy xuất một bản ghi cụ thể từ lõi đã chọn, bạn cần chuyển các cặp tên và giá trị của các trường của một tài liệu cụ thể. Ví dụ: nếu bạn muốn truy xuất bản ghi với giá trị của trườngid, bạn cần chuyển cặp tên-giá trị của trường là - Id:001 làm giá trị cho tham số q và thực hiện truy vấn.

Theo cách tương tự, bạn có thể truy xuất tất cả các bản ghi từ một chỉ mục bằng cách chuyển *: * làm giá trị cho tham số q, như được hiển thị trong ảnh chụp màn hình sau đây.

Lấy từ bản ghi thứ 2

Chúng ta có thể truy xuất các bản ghi từ bản ghi thứ hai bằng cách chuyển 2 làm giá trị cho tham số start, như được hiển thị trong ảnh chụp màn hình sau đây.

Hạn chế số lượng bản ghi

Bạn có thể hạn chế số lượng bản ghi bằng cách chỉ định một giá trị trong rowstham số. Ví dụ: chúng ta có thể hạn chế tổng số bản ghi trong kết quả của truy vấn là 2 bằng cách chuyển giá trị 2 vào tham sốrows, như được hiển thị trong ảnh chụp màn hình sau đây.

Loại người viết phản hồi

Bạn có thể nhận được phản hồi trong loại tài liệu bắt buộc bằng cách chọn một từ các giá trị được cung cấp của tham số wt.

Trong ví dụ trên, chúng tôi đã chọn .csv định dạng để nhận được phản hồi.

Danh sách các trường

Nếu chúng ta muốn có các trường cụ thể trong tài liệu kết quả, chúng ta cần chuyển danh sách các trường bắt buộc, được phân tách bằng dấu phẩy, làm giá trị cho thuộc tính fl.

Trong ví dụ sau, chúng tôi đang cố gắng truy xuất các trường: id, phone,first_name.

Faceting trong Apache Solr đề cập đến việc phân loại kết quả tìm kiếm thành các danh mục khác nhau. Trong chương này, chúng ta sẽ thảo luận về các kiểu khía cạnh có sẵn trong Apache Solr -

  • Query faceting - Nó trả về số lượng tài liệu trong kết quả tìm kiếm hiện tại cũng khớp với truy vấn đã cho.

  • Date faceting - Nó trả về số lượng tài liệu nằm trong phạm vi ngày nhất định.

Các lệnh khía cạnh được thêm vào bất kỳ yêu cầu truy vấn Solr thông thường nào và số lượng các khía cạnh trở lại trong cùng một phản hồi truy vấn.

Ví dụ về truy vấn Faceting

Sử dụng trường faceting, chúng tôi có thể truy xuất số lượng cho tất cả các cụm từ hoặc chỉ các cụm từ hàng đầu trong bất kỳ trường nhất định nào.

Để làm ví dụ, chúng ta hãy xem xét những điều sau books.csv tệp chứa dữ liệu về các cuốn sách khác nhau.

id,cat,name,price,inStock,author,series_t,sequence_i,genre_s 
0553573403,book,A Game of Thrones,5.99,true,George R.R. Martin,"A Song of Ice 
and Fire",1,fantasy 

0553579908,book,A Clash of Kings,10.99,true,George R.R. Martin,"A Song of Ice 
and Fire",2,fantasy 

055357342X,book,A Storm of Swords,7.99,true,George R.R. Martin,"A Song of Ice 
and Fire",3,fantasy 

0553293354,book,Foundation,7.99,true,Isaac Asimov,Foundation Novels,1,scifi 
0812521390,book,The Black Company,4.99,false,Glen Cook,The Chronicles of The 
Black Company,1,fantasy 

0812550706,book,Ender's Game,6.99,true,Orson Scott Card,Ender,1,scifi 
0441385532,book,Jhereg,7.95,false,Steven Brust,Vlad Taltos,1,fantasy 
0380014300,book,Nine Princes In Amber,6.99,true,Roger Zelazny,the Chronicles of 
Amber,1,fantasy 

0805080481,book,The Book of Three,5.99,true,Lloyd Alexander,The Chronicles of 
Prydain,1,fantasy 

080508049X,book,The Black Cauldron,5.99,true,Lloyd Alexander,The Chronicles of 
Prydain,2,fantasy

Hãy để chúng tôi đăng tệp này lên Apache Solr bằng cách sử dụng post dụng cụ.

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

Khi thực hiện lệnh trên, tất cả các tài liệu được đề cập trong .csv tệp sẽ được tải lên Apache Solr.

Bây giờ, hãy để chúng tôi thực hiện một truy vấn nhiều khía cạnh trên trường author với 0 hàng trên bộ sưu tập / lõi my_core.

Mở giao diện người dùng web của Apache Solr và ở phía bên trái của trang, chọn hộp kiểm facet, như được hiển thị trong ảnh chụp màn hình sau đây.

Khi chọn hộp kiểm, bạn sẽ có thêm ba trường văn bản để chuyển các tham số của tìm kiếm theo khía cạnh. Bây giờ, dưới dạng các tham số của truy vấn, hãy chuyển các giá trị sau.

q = *:*, rows = 0, facet.field = author

Cuối cùng, thực hiện truy vấn bằng cách nhấp vào Execute Query cái nút.

Khi thực thi, nó sẽ tạo ra kết quả sau.

Nó phân loại các tài liệu trong chỉ mục dựa trên tác giả và chỉ định số lượng sách đóng góp của mỗi tác giả.

Faceting Sử dụng Java Client API

Sau đây là chương trình Java để thêm tài liệu vào chỉ mục Apache Solr. Lưu mã này trong một tệp có tênHitHighlighting.java.

import java.io.IOException; 
import java.util.List;  

import org.apache.Solr.client.Solrj.SolrClient; 
import org.apache.Solr.client.Solrj.SolrQuery; 
import org.apache.Solr.client.Solrj.SolrServerException; 
import org.apache.Solr.client.Solrj.impl.HttpSolrClient; 
import org.apache.Solr.client.Solrj.request.QueryRequest; 
import org.apache.Solr.client.Solrj.response.FacetField; 
import org.apache.Solr.client.Solrj.response.FacetField.Count;
import org.apache.Solr.client.Solrj.response.QueryResponse; 
import org.apache.Solr.common.SolrInputDocument;  

public class HitHighlighting { 
   public static void main(String args[]) throws SolrServerException, IOException { 
      //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(); 
   
      //String query = request.query;    
      SolrQuery query = new SolrQuery(); 
         
      //Setting the query string 
      query.setQuery("*:*"); 
         
      //Setting the no.of rows 
      query.setRows(0); 
         
      //Adding the facet field 
      query.addFacetField("author");        
         
      //Creating the query request 
      QueryRequest qryReq = new QueryRequest(query); 
      
      //Creating the query response 
      QueryResponse resp = qryReq.process(Solr);  
      
      //Retrieving the response fields 
      System.out.println(resp.getFacetFields()); 
      
      List<FacetField> facetFields = resp.getFacetFields(); 
      for (int i = 0; i > facetFields.size(); i++) { 
         FacetField facetField = facetFields.get(i); 
         List<Count> facetInfo = facetField.getValues(); 
         
         for (FacetField.Count facetInstance : facetInfo) { 
            System.out.println(facetInstance.getName() + " : " + 
               facetInstance.getCount() + " [drilldown qry:" + 
               facetInstance.getAsFilterQuery()); 
         } 
         System.out.println("Hello"); 
      } 
   } 
}

Biên dịch đoạn mã trên bằng cách thực hiện các lệnh sau trong terminal:

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

Khi thực hiện lệnh trên, bạn sẽ nhận được kết quả sau.

[author:[George R.R. Martin (3), Lloyd Alexander (2), Glen Cook (1), Isaac 
Asimov (1), Orson Scott Card (1), Roger Zelazny (1), Steven Brust (1)]]