Apache Solr


1. Solr là gì?
Solr là một máy chủ tìm kiếm có tốc độ thực thi rất nhanh. Solr sử dụng nhân tìm kiếm Lucene, là một thư viện tìm kiếm được Apache phát triển gồm có các chức năng sau
- Full-text
- Highlighting
- faceted search
- Tìm kiếm website
- Tìm kiếm trong database
- Tìm kiếm file
2. Vì sao chọn Solr?
- Với SQL search:
+ Chất lượng tìm kiếm thường rất tệ, kết quả trả về là giá trị đầu tiên tìm được chứ không phải là giá trị tốt nhất, những thứ mà người dùng muốn tìm
+ Tốc độ tìm kiếm rất chậm với CSDL lớn hay là có nhiều truy xuất đồng thời. Vì CSDL không phải được thiết kế để tìm kiếm nên nó chậm là điều hiển nhiên.
- Và hiện nay cũng có nhiều loại máy chủ tìm kiến khác nhau. tuy nhiên dựa trên tiêu chí đánh giá về thời gian thực hiện quá trình đánh chỉ mục, và thời gian truy vấn được thực hiện trong một đơn vị thời gian, số lượng không gian đĩa cứng mà bộ dữ liệu đánh chỉ mục chiếm dụng, Solr xứng đáng là ứng cử viên xuất sắc cho một bộ máy tìm kiếm
3. Các tính năng khác mà Solr hỗ trợ
- Tìm từ đồng nghĩa
- Đánh dấu kết quả trả về
- Phân tán
- Tìm kiếm với nhiều cú pháp
- Hỗ trợ đầu ra: JSON, XML, CSV, PHP,...
- Tích hợp với các ứng dụng khác đơn giản
- Kết hợp trực tiếp với các CSDL(MySQL, Oracle, NOSQL,...) để lấy dữ liệu
4. Hướng dẫn cài đặt Solr
- Trên Windows:
 + Giải nén bộ cài Solr vào D://Search/Solr
 + Chuyển vào folder example của Solr bằng command line
 + Start Solr dùng lệnh: java -jar start.jar
- Trên Linux:
  + Giải nén bộ cài Solr vào /u02/Search/Solr
 + Chuyển vào folder example của Solr
 + Start Solr dùng lệnh: java -jar start.jar
- Sau khi khởi động Solr vào đường dẫn: http://localhost:8983/solr để sử dụng solr trên giao diện trình duyệt
5. Hướng dẫn chạy Solr trên Apache Tomcat
- Download Solr từ: http://archive.apache.org/dist/lucene/solr/4.8.1/solr-4.8.1-src.tgz
- Unzip Solr trong folder /u02
- Coppy file WAR từ solr-4.8.1/dist/solr-4.8.1.war đến folder ROOT của Tomcat
- Deploy file WAR trong folder ROOT
- Coppy lib từ solr-4.8.1/example/lib/ext sang Apache-tomcat-7/lib
- Coppy lib từ  solr-4.8.1/ sang WEB-INF/lib
- Bổ sung vào file WEB-INF\web.xml
<env-entry>
   <env-entry-name>solr/home</env-entry-name>
   <env-entry-value>u02/solr-4.8.1/example/solr</env-entry-value>
   <env-entry-type>java.lang.String</env-entry-type>
</env-entry>
- start TomCat

Cấu hình solr

- File solrconfig.xml
  <lib dir="E:/solr-4.10.4/solr-4.10.4/contrib/extraction/lib" regex=".*\.jar" />
  <lib dir="E:/solr-4.10.4/solr-4.10.4/dist/" regex="solr-cell-\d.*\.jar" />

  <lib dir="E:/solr-4.10.4/solr-4.10.4/contrib/clustering/lib/" regex=".*\.jar" />
  <lib dir="E:/solr-4.10.4/solr-4.10.4/dist/" regex="solr-clustering-\d.*\.jar" />

  <lib dir="E:/solr-4.10.4/solr-4.10.4/contrib/langid/lib/" regex=".*\.jar" />
  <lib dir="E:/solr-4.10.4/solr-4.10.4/dist/" regex="solr-langid-\d.*\.jar" />
  <lib dir="E:/solr-4.10.4/solr-4.10.4/dist/" regex="mysql-connector-java-5.1.18.jar" />

  <lib dir="E:/solr-4.10.4/solr-4.10.4/contrib/velocity/lib" regex=".*\.jar" />
  <lib dir="E:/solr-4.10.4/solr-4.10.4/dist/" regex="solr-velocity-\d.*\.jar" />
  <lib dir="E:/solr-4.10.4/solr-4.10.4/dist" regex="solr-dataimporthandler-\d.*\.jar" />

  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
  </requestHandler>

- Tạo file: db-data-config.xml

<dataConfig>
 <dataSource type="JdbcDataSource"
              driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost/test"
              user="solr"
              password="solr123"/>
 <document>
  <entity name="users" query="select ID, PHONE, EMAIL_ADDRESS from USERS">
<field column="ID" name="id" />
<field column="EMAIL_ADDRESS" name="email" />
<field column="PHONE" name="phone" />
  </entity>
 </document>
</dataConfig>

- Trong file: schema.xml định nghĩa các fiel name

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
 <field name="email" type="string" indexed="true" stored="true" />
 <field name="address" type="string" indexed="true" stored="true" />
 <field name="phone" type="string" indexed="true" stored="true" />






Không có nhận xét nào:

Đăng nhận xét