Tìm hiểu về Apache Solr
Cài đặt, cấu hình, một số đặc điểm chính(Phần 1)
Solr là một platform (nền tảng) mã nguồn mở dựa trên Apache Lucence có khả năng cung cấp sử dụng Lucene Java làm thư viện cho việc index( đánh chỉ số) và search( tìm kiếm) dữ liệu .Solr nhập dữ liệu dưới dạng XML thông qua HTTP, hoặc sử dụng thư viện để nhập khối lượng lớn dữ liệu. Người dùng có thể truy vấn dữ liệu này thông qua HTTP GET và nhận về một kết quả dạng XML. Solr chạy bên trong một Java servlet container như Tomcat, Jetty hay Resin.
Hình 1: Cấu trúc chung của Apache Solr
Yêu cầu cài đặt
Điều kiện tiên quyết sử dụng solr phải cần những công cụ sau
- Gnu's GCJ thì không được hỗ trợ cũng như tương thích với Solr
- Source của một apache Solr release
**Quá trình cài đặt java, download apache solr thành công (nên download phiên bản .zip), tiếp tục thực hiện các bước sau:
**
**
Bước đầu tiên giải nén solr, và cd vào thư mục codefrag . (Chú ý rằng thư mục cha của example có tên là khác nhau tùy vào từng phiên bản.) Ví dụ với shell in UNIX, Cygwin, hoặc MacOS:
lucct@ubuntu ~ $ unzip -q solr-4.10.1.zip lucct@ubuntu ~ $ cd solr-4.10.1/example/
Để khởi động Solr thì ta sử dụng lệnh như sau:
lucct@ubuntu example $ java -jar start.jar 0 [main] INFO org.eclipse.jetty.server.Server – jetty-8.1.10.v20130312 74 [main] INFO org.eclipse.jetty.deploy.providers.ScanningAppProvider – Deployment monitor /home/lucct/solr-4.10.1/example/contexts at interval 0 142 [main] INFO org.eclipse.jetty.deploy.DeploymentManager – Deployable added: /home/lucct/solr-4.10.1/example/contexts/solr-jetty-context.xml 4093 [main] INFO org.eclipse.jetty.webapp.StandardDescriptorProcessor – NO JSP Support for /solr, did not find org.apache.jasper.servlet.JspServlet ...............................................................e 6811 [main] INFO org.apache.solr.update.UpdateShardHandler – Creating UpdateShardHandler HTTP client with params: socketTimeout=0&connTimeout=0&retry=false 6813 [main] INFO org.apache.solr.logging.LogWatcher – SLF4J impl is org.slf4j.impl.Log4jLoggerFactory ............................................................... 7452 [coreLoadExecutor-5-thread-1] INFO org.apache.solr.core.SolrResourceLoader – Adding 'file:/home/lucct/solr-4.10.1/contrib/extraction/lib/metadata-extractor-2.6.2.jar' to classloader 7452 [coreLoadExecutor-5-thread-1] INFO org.apache.solr.core.SolrResourceLoader – Adding 'file:/home/lucct/solr-4.10.1/contrib/extraction/lib/juniversalchardet-1.0.3.jar' to classloader 7453 [coreLoadExecutor-5-thread-1] INFO org.apache.solr.core.SolrResourceLoader – Adding 'file:/home/lucct/solr-4.10.1/contrib/extraction/lib/tika-xmp-1.5.jar' to classloader ............................................................... 15051 [searcherExecutor-6-thread-1] INFO org.apache.solr.spelling.suggest.SolrSuggester – reload() 15051 [searcherExecutor-6-thread-1] INFO org.apache.solr.spelling.suggest.SolrSuggester – build() 15079 [searcherExecutor-6-thread-1] INFO org.apache.solr.core.SolrCore – [collection1] Registered new searcher Searcher@14b3fd5d[collection1] main{StandardDirectoryReader(segments_1:1:nrt)}
Khởi động solr hoàn tất và ứng dụng chạy trên cổng 8983, sử dụng thiết bị đầu cuối của bạn để hiện thị các thông tin của solr
Bạn có thể thấy solr chạy bằng cách loading đường dẫn http://localhost:8983/solr/ trong trình duyệt web của bạn.
Config
Có 2 file config chính là: schema.xml và solrconfig.xml nằm trong thư mục
"/home/lucct/solr-4.10.1/example/solr/collection1/conf"
- Schema.xml dùng để config các trường dữ liệu, cách lưu trữ dữ liệu để sau này ta lưu data vào đó.
- Solrconfig.xml dùng để config các chức năng (cụ thể ở đây là các request hanlders và các tính năng khác nữa).
Có thể truy cập file Solrconfig.xml bằng cách vào Admin của Solr (view-only):
http://localhost:8983/solr/#/collection1/config
http://localhost:8983/solr/#/collection1/config
Các chức năng cơ bản của Solr
- Khả năng tìm kiếm văn bản toàn diện(Full-Text Search) giống kiểu Google.
- Chỉnh sửa để hiệu năng tốt hơn.
- Dựa trên các chuẩn mở trong giao tiếp với các hệ thống khác – XML, JSON và HTTP
- Quản trị dưới dạng giao diện HTML đơn giản
- Thống kê dưới dạng JMX
- Khả năng mở rộng ra nhiều server Solr
- Cấu hình đơn giản dễ dàng với định dạng XML
- Có khả năng bổ sung các phần mở rộng(plugin) mới. Ví dụ như phân tích mở rộng tiếng Việt: Bắt lỗi chính tả, bỏ dấu,…
- Cho phép highlighting kết quả tìm kiếm, như cách mà google hiện thị thông tin tóm tắt về kết quả mà ở đó câu truy vấn được in đậm
- Có thể xây dựng rất nhiều ứng dụng khác mà một trang tìm kiếm cần như: autosuggestion, spellchecking, xây dựng tagcloud, phân loại kết quả clustering (như Bing làm), trending keywords, category navigation, các kết quả liên quan, nhóm kết quả (field collapsed) …
- Cho phép scale hệ thống một cách dễ dàng khi bạn có một lượng lớn dữ liệu mà không đủ chứa trên một máy chủ hay phải phục vụ rất nhiều người dùng đồng thời.
- Solr cũng có thể dùng như CSDL NoSQL hay như cache layer, dùng cho các listing cần performance tốt.
- Solr cũng sắp hỗ trợ realtime cho phép tìm kiếm ngay kết quả sau khi index. Điều nàyđặc biệt khó khi index rất lớn. Hiện tại Solr cho phép kết quả rât nhanh, nhưng phải hy sinh thời gian index. Với dữ liệu lớn có khi bạn phải mất 30 phút chỉ để cập nhật được một tài liệu.
- Solr hỗ trợ rất nhiều công cụ để tinh chỉnh kết quả tìm kiếm, bằng tất cả các thông tin mà bạn cung cấp làm sao để kết quả trả về là tốt nhất. Ví dự như đánh trọng số các trường, click log, số lượt view, …
Tổng quan về Fields của Apache Solr
Bạn đưa rất nhiều thông tin để lưu vào cơ sở dữ liệu, sau đó bạn muốn tìm những mẩu thông tin trong số chúng một cách chọn lọc, chắt lọc, và solr là một công cụ hỗ trợ hữu ích cho bạn làm được điều đó. Phần mà bạn muốn feed tất cả các thông tin được gọi ra là indexing hoặc updating. Khi bạn đưa ra một câu hỏi, nó được gọi là query.
Một cách đơn giản để hiểu về cách vận hành của solr như một cuốn sách được bao gồm phần mục lục sẽ chắt lọc toàn bộ thông tin chính của chuỗi thông tin, và đưa ra số trang dẫn đến thông tin đó. Bằng cách đó thì ta có thể nhanh chóng tìm được thông tin mà mà bạn muốn tìm kiếm. Bạn liệt kê các thành phần, số lượng trang, từ khóa cho thông tin mà bạn muốn thêm vào trong cơ sở dữ liệu thì thông tin sau này sẽ tìm kiếm được nhanh chóng và dễ dàng hơn với solr
Solr cho phép bạn xây dựng một index với nhiều lĩnh vực, kiểu loại khác nhau. Ví dụ một tập dữ liệu về các món ăn như món âu, á món chiên, ... và solr đưa vào index thời gian hoàn thành món, hay số lượng nguyên liệu, ...
Schema là nơi bạn xây dựng các dữ kiện đầu vào cho solr
Vậy làm thế nào để solr nhận ra được các từ, key word
Đơn vị thông tin cơ bản của solr là một document, nó là một tập các dữ liệu mô tả một vấn đề nào đó. Một document sẽ chứa các thông tin dữ liệu nhỏ ví dụ như cuốn sách dậy nấu ăn trên sẽ chứa hướng dẫn về món ăn, thời gian chuẩn bị, thời gian nấu, và các công cụ cần thiết, ... Một document về con người sẽ chứa tiểu sử, màu sắc ưa thích, kích cỡ giày, chiều cao, cân nặng của người đó. Một document về cuốn sách nào đó thì chứa thông tin về tiêu đề, tác giả, năm xuất bản, số trang, ... và việc định nghĩa các trường trong solr chính là các thông tin vừa nêu trong ví dụ. Khi bạn thêm một dữ liệu bất kì vào trong solr, thì dữ liệu đó sẽ được đánh index, và khi bạn truy vấn thì dựa vào index đó solr sẽ trả ra kết quả tìm kiếm một cách nhanh chóng cho bạn
Định nghĩa Field Type và các properties
Một Field Type được định nghĩa là bao gồm các thông tin như sau:
- Tên của loại trường đó (bắt buộc)
-Tên của class (bắt buộc)
-Với kiểu trường làTextField
, mô tả các lĩnh vực phân tích cho kiểu trường đó
-Thuộc tính của kiểu trường đó - tùy thuộc vào class mà một số properties có thể bắt buộc phải có.
Kiểu trường định nghĩa trong schema.xml
Kiểu trường được định nghĩa trong


schema.xml
, với các kiểu thành phần, mỗi một kiểu trường thì được định nghĩa giữa fieldType
. Dưới đây là một ví dụ về kiểu trường định nghĩa cho type được gọi với text_general

Dòng đầu tiên có chứa tên của loại trường, text_general và tên của các lớp thực hiện sold.TextField
Các class thực hiện có trách nhiệm đamt bảo các lĩnh vực được xử lý một cách chính xác. Tên class trong schema.xml, được bắt đầu với "solr." nó được gọi tắt từ các thư viện
Các class thực hiện có trách nhiệm đamt bảo các lĩnh vực được xử lý một cách chính xác. Tên class trong schema.xml, được bắt đầu với "solr." nó được gọi tắt từ các thư viện
org.apache.solr.schema
hoặc org.apache.solr.analysis
. Vì vậy, solr.TextField
thực ra là gọi từ org.apache.solr.schema.TextField.
Thuộc tính của kiểu trường
Các thuộc tính của kiểu trường xác định hầu hết các hành vi của một loại trường, nhưng thuộc tính tùy chọn cũng có thể được định nghĩa.Ví dụ, các định nghĩa sau của một loại trường date định nghĩa 2 thuộc tính
sortMissingLast
và omitNorms
.<fieldType name="date" class="solr.TrieDateField" sortMissingLast="true" omitNorms="true"/>
<p>Các thuộc tính có thể thuộc một trong những thuộc tính sau:</p>
-Thuộc tính riêng của kiểu trường trong class
-General PropertiesSolr supports cho tất cả các kiểu trường này
-Field Default Properties Có thể được chỉ định vào loại trường sẽ được kế thừa thay thế cho các trường mặc định.
-General PropertiesSolr supports cho tất cả các kiểu trường này
-Field Default Properties Có thể được chỉ định vào loại trường sẽ được kế thừa thay thế cho các trường mặc định.
General Properties
Property | Description | Values |
---|---|---|
autoGeneratePhraseQueries | Đối với các trường cơ bản, nếu đúng thì Solr tự động tạo ra các truy vấn Solr phrases (truy vấn cụm) với các terms liền kề. Nếu sai, các terms phải được đặt trong dấu ngoặc kép để xử lý như các pharse. | true or false |
class | Tên class mà được sử dụng để lưu trữ các dữ liệu và chỉ số cho loại này. Lưu ý rằng bạn có thể thêm tiền tố đi kèm "solr." và Solr sẽ tự động tìm ra những gói để tìm kiếm các lớp - vì vậy solr.TextField sẽ làm việc. Nếu bạn đang sử dụng class thứ 3, bạn sẽ cần phải tên class đầy đủ. Tương tự đầy đủ cho solr.TextField là org.apache.solr.schema.TextField | n/a |
docValuesFormat | Định nghĩa một DocValuesFormat để dùng cho các field của loại này. Điều này cần phải có schema-aware codec, chẳng hạn như SchemaCodecFactory được cấu hình trong solrconfig.xml. | n/a |
name | Tên của fieldType. Giá trị này được dùng để định nghĩa Field, trong các "type" attribute. Nó được khuyến khích là tên gồm 1 chữ và số hoặc ký tự gạch dưới và không bắt đầu bằng 1 chữ số. | |
positionIncrementGap | Dùng cho các fields đa trị, xác định khoảng cách giữa hoặc nhiều giá trị, nó ngăn chặn các giả mạo phrase được tìm thấy | integer |
PostingsFormat | Định nghĩa một PostingsFormat để sử dụng cho các fields của loại này. Điều này cần phải có schema-aware codec, chẳng hạn như SchemaCodecFactory được cấu hình trong solrconfig.xml. |
Field Default Properties
Property | Description | Values |
---|---|---|
docValues | Nếu đúng, giá trị của field này sẽ được đặt trong cấu trúc của cộtstructure | true or false |
indexed | Nếu đúng, giá trị của field này có thể được sử dụng trong các truy vấn lấy được documents phù hợp | true or false |
multiValued | Nếu đúng, chỉ ra rằng một document có thể chứa nhiều giá trị của kiểu field này | true or false |
omitNorms | Nếu đúng, sẽ bỏ qua các chỉ tiêu liên quan đến field này (điều này sẽ giảm bớt độ dài và bộ nhớ cho quá trình tìm kiếm). Mặc định là đúng cho tất cả loại field nguyên thủy (non-analyzed) , cũng như int, float, data, bool, và string. | true or false |
omitPositions | Tương tự như omitTermFreqAndPositions nhưng giữ lại thông tin tần suất của terms | true or false |
omitTermFreqAndPositions | Nếu đúng, bỏ qua tần số, vị trí, trọng tải từ các quảng cáo của của terms. Điều này cải thiện hiệu suất cho các trường không yêu cầu thông tin. Nó cũng giảm không gian lưu trữ cần thiết cho index. Truy vấn dựa trên vị trí đó được phát trên một field với tùy chọn là không tìm thấy documents. Mặc định thuộc tính này đúng cho tất cả các fields mà không phải là fields văn bản. | true or false |
required | Từ chối việc thêm field rỗng. Mặc định có giá trị là false. | true or false |
sortMissingFirst sortMissingLast | Điều khiển vị trí của documents khi lựa chọn field không có đại diện. Kể từ Solr 3.5, nó sẽ làm việc với tất cả các trường numeric, gồm cả trường Trie and date. | true or false |
stored | Nếu đúng, giá trị thực tế của trường sẽ có thể lấy được bằng truy vấn | true or false |
termVectors termPositions termOffsets | Những tùy chọn hướng dẫn solr duy trì đầy đủ các vector hạn cho mỗi document, tùy chọn bao gồm các vị trí và thông tin cho mỗi terms xuất hiện trong vectors. Điều này làm tăng tốc độ tìm các thông tin nổi bật và các function khác, nhưng mất một chi phí lớn về kích thước index. Nó không phải là điển hình dùng trong Solr | true or false |
Dynamic Fields
Dynamic Fiels
cho phép Solr index đến Filds mà bạn đã không xác định rõ ràng. Điều này rất hữu ích vì chẳng may bạn quên định nghĩa một trường nào đó thì nó sẽ giúp ta cảnh báo. Dynamic Fiels
còn làm cho dữ liệu tìm kiếm của bạn linh hoạt hơn khi bạn thêm mới cũng như cập nhậtDynamic Fiels
được quy định rõ trong thành phần của schema.xml, giống như Fields nó cũng có tên, loại tên và tùy chọn<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
<h2>Tài liệu tham khảo</h2>
Tài liệu tham khảo
- https://cwiki.apache.org/confluence/display/solr/A+Quick+Overview
- http://lucene.apache.org/solr/4_10_1/tutorial.html
Khóa đào tạo Power BI phân tích báo cáo để bán hàng thành công
KHÓA HỌC LẬP TRÌNH PYTHON TỪ CƠ BẢN ĐẾN CHUYÊN NGHIỆP
Khóa học Lập trình Visual Foxpro 9 - Dành cho nhà quản lý và kế toán
Khóa học hướng dẫn về Moodle chuyên nghiệp và hay
Xây dựng hệ thống đào tạo trực tuyến chuyên nghiệp tốt nhất hiện nay.

Khóa học AutoIt dành cho dân IT và Marketing chuyên nghiệp
Khóa học hướng dẫn sử dụng Powerpoint từ đơn giản đến phức tạp HIỆU QUẢ
Khóa học Thiết kế, quản lý dữ liệu dự án chuyên nghiệp cho doanh nghiệp bằng Bizagi
Khóa học Phân tích dữ liệu sử dụng Power Query trong Excel
Khóa học “Thiết kế bài giảng điện tử”, Video, hoạt hình
kiếm tiền Youtube bằng phần mềm Camtasia Studio
Khóa học HƯỚNG DẪN THIẾT KẾ VIDEO CLIP CHO DÂN MARKETING CHUYÊN NGHIỆP
HƯỚNG DẪN THIẾT KẾ QUẢNG CÁO VÀ ĐỒ HỌA CHUYÊN NGHIỆP VỚI CANVA
Hãy tham gia khóa học để trở thành người chuyên nghiệp. Tuyệt HAY!😲👍
GOOGLE SPREADSHEETS phê không tưởng
Khóa học sử dụng Adobe Presenter-Tạo bài giảng điện tử
Khóa học sử dụng Edmodo để dạy và học hiện đại để thành công
Cập nhật công nghệ từ Youtube tại link: congnghe.hocviendaotao.com
Tham gia nhóm Facebook
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com