Ngoài việc trả lời các truy vấn của OP, hãy để tôi đưa ra một số hiểu biết về Apache Solr từ giới thiệu đơn giản đến cài đặt và triển khai chi tiết .
Giới thiệu đơn giản
Bất cứ ai đã có kinh nghiệm với các công cụ tìm kiếm ở trên hoặc các công cụ khác không có trong danh sách - tôi rất thích nghe ý kiến của bạn.
Solr không nên được sử dụng để giải quyết các vấn đề thời gian thực. Đối với các công cụ tìm kiếm, Solr là trò chơi khá nhiều và hoạt động hoàn hảo .
Solr hoạt động tốt trên các ứng dụng web có lưu lượng truy cập cao ( Tôi đã đọc ở đâu đó rằng nó không phù hợp với điều này, nhưng tôi đang sao lưu tuyên bố đó ). Nó sử dụng RAM, không phải CPU.
- kết quả phù hợp và xếp hạng
Việc tăng giúp bạn xếp hạng kết quả của bạn hiển thị trên đầu trang. Này, bạn đang cố gắng để tìm kiếm một tên john trong các lĩnh vực firstname và lastname , và bạn muốn đưa ra liên quan đến firstname lĩnh vực, sau đó bạn cần phải tăng lên firstname lĩnh vực như thể hiện.
http://localhost:8983/solr/collection1/select?q=firstname:john^2&lastname:john
Như bạn có thể thấy, firstname lĩnh vực đang tăng lên với tỷ số 2.
Thông tin thêm về SolrRelevancy
- tốc độ tìm kiếm và lập chỉ mục
Tốc độ nhanh đến mức không thể tin được và không có sự thỏa hiệp nào về điều đó. Lý do tôi chuyển đến Solr .
Về tốc độ lập chỉ mục, Solr cũng có thể xử lý THAM GIA từ các bảng cơ sở dữ liệu của bạn. THAM GIA cao hơn và phức tạp hơn ảnh hưởng đến tốc độ lập chỉ mục. Tuy nhiên, một cấu hình RAM khổng lồ có thể dễ dàng giải quyết tình huống này.
RAM càng cao, tốc độ lập chỉ mục của Solr càng nhanh.
- dễ sử dụng và dễ tích hợp với Django
Không bao giờ cố gắng tích hợp Solr và Django , tuy nhiên bạn có thể đạt được điều đó với Haystack . Tôi đã tìm thấy một số bài viết thú vị trên cùng và đây là github cho nó.
- yêu cầu tài nguyên - trang web sẽ được lưu trữ trên VPS, vì vậy lý tưởng nhất là công cụ tìm kiếm sẽ không cần nhiều RAM và CPU
Solr sinh ra trên RAM, vì vậy nếu RAM cao, bạn không phải lo lắng về Solr .
Việc sử dụng RAM của Solr sẽ giúp lập chỉ mục đầy đủ nếu bạn có vài tỷ bản ghi, bạn có thể sử dụng thông minh nhập khẩu Delta để giải quyết tình huống này một cách thông minh. Như đã giải thích, Solr chỉ là một giải pháp gần thời gian thực .
Solr có khả năng mở rộng cao. Hãy xem trên SolrCloud . Một số tính năng chính của nó.
- Phân đoạn (hoặc shending là khái niệm phân phối chỉ mục giữa nhiều máy, giả sử nếu chỉ mục của bạn tăng quá lớn)
- Cân bằng tải (nếu Solrj được sử dụng với đám mây Solr, nó sẽ tự động xử lý cân bằng tải bằng cơ chế Round-Robin của nó)
- Tìm kiếm phân tán
- Tính sẵn sàng cao
- các tính năng bổ sung như "ý bạn là gì?", các tìm kiếm liên quan, v.v.
Đối với kịch bản trên, bạn có thể sử dụng SpellCheckComponent được đóng gói với Solr . Có rất nhiều tính năng khác, SnowballPorterFilterFactory giúp truy xuất các bản ghi cho biết nếu bạn nhập, sách thay vì sách , bạn sẽ được trình bày các kết quả liên quan đến sách .
Câu trả lời này tập trung rộng rãi vào Apache Solr & MySQL . Django nằm ngoài phạm vi.
Giả sử rằng bạn đang ở trong môi trường LINUX, bạn có thể tiếp tục bài viết này. (của tôi là phiên bản Ubuntu 14.04)
Cài đặt chi tiết
Bắt đầu
Tải xuống Apache Solr từ đây . Đó sẽ là phiên bản 4.8.1 . Bạn có thể tải về các phiên bản mới, tôi thấy điều này ổn định.
Sau khi tải xuống kho lưu trữ, giải nén nó vào một thư mục bạn chọn. Nói .. Downloads
hoặc bất cứ điều gì .. Vì vậy, nó sẽ trông giống nhưDownloads/solr-4.8.1/
Theo lời nhắc của bạn .. Điều hướng trong thư mục
shankar@shankar-lenovo: cd Downloads/solr-4.8.1
Vì vậy, bây giờ bạn đang ở đây ..
shankar@shankar-lenovo: ~/Downloads/solr-4.8.1$
Khởi động máy chủ ứng dụng Jetty
Cầu tàu có sẵn trong thư mục ví dụ của thư mục solr-4.8.1
, vì vậy hãy điều hướng bên trong đó và khởi động Máy chủ ứng dụng Jetty.
shankar@shankar-lenovo:~/Downloads/solr-4.8.1/example$ java -jar start.jar
Bây giờ, không đóng thiết bị đầu cuối, giảm thiểu nó và để nó sang một bên.
(MIPO: Sử dụng & sau start.jar để làm cho Máy chủ Jetty chạy trong nền)
Để kiểm tra xem Apache Solr có chạy thành công hay không, hãy truy cập URL này trên trình duyệt. http: // localhost: 8983 / solr
Chạy cầu cảng trên cổng tùy chỉnh
Nó chạy trên cổng 8983 như mặc định. Bạn có thể thay đổi cổng ở đây hoặc trực tiếp bên trong jetty.xml
tệp.
java -Djetty.port=9091 -jar start.jar
Tải xuống JConnector
Tệp JAR này hoạt động như một cầu nối giữa MySQL và JDBC, Tải xuống Phiên bản độc lập nền tảng tại đây
Sau khi tải xuống, giải nén thư mục và sao chép mysql-connector-java-5.1.31-bin.jar
và dán vào thư mục lib .
shankar@shankar-lenovo:~/Downloads/solr-4.8.1/contrib/dataimporthandler/lib
Tạo bảng MySQL được liên kết với Apache Solr
Để đưa Solr vào sử dụng, Bạn cần có một số bảng và dữ liệu để tìm kiếm. Vì vậy, chúng tôi sẽ sử dụng MySQL để tạo bảng và đẩy một số tên ngẫu nhiên và sau đó chúng tôi có thể sử dụng Solr để kết nối với MySQL và lập chỉ mục cho bảng đó và các mục đó.
Cấu trúc 1.Table
CREATE TABLE test_solr_mysql
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(45) NULL,
created TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
2. Lập bảng trên
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jean');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jack');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jason');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Vego');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Grunt');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jasper');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Fred');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jenna');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Rebecca');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Roland');
Vào bên trong lõi và thêm các chỉ thị lib
1. Định hướng đến
shankar@shankar-lenovo: ~/Downloads/solr-4.8.1/example/solr/collection1/conf
2.Modifying solrconfig.xml
Thêm hai chỉ thị này vào tập tin này ..
<lib dir="../../../contrib/dataimporthandler/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-dataimporthandler-\d.*\.jar" />
Bây giờ thêm DIH (Trình xử lý nhập dữ liệu)
<requestHandler name="/dataimport"
class="org.apache.solr.handler.dataimport.DataImportHandler" >
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>
3. Tạo tệp db-data-config.xml
Nếu tệp tồn tại thì bỏ qua, thêm các dòng này vào tệp đó. Như bạn có thể thấy dòng đầu tiên, bạn cần cung cấp thông tin đăng nhập của cơ sở dữ liệu MySQL của bạn . Tên cơ sở dữ liệu, tên người dùng và mật khẩu.
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/yourdbname" user="dbuser" password="dbpass"/>
<document>
<entity name="test_solr" query="select CONCAT('test_solr-',id) as rid,name from test_solr_mysql WHERE '${dataimporter.request.clean}' != 'false'
OR `created` > '${dataimporter.last_index_time}'" >
<field name="id" column="rid" />
<field name="solr_name" column="name" />
</entity>
</document>
</dataConfig>
(MIPO: Bạn có thể có bất kỳ số lượng thực thể nào nhưng coi chừng trường id, nếu chúng giống nhau thì việc lập chỉ mục sẽ bị bỏ qua.)
4. Sửa đổi tệp giản đồ
Thêm này để bạn schema.xml như ..
<uniqueKey>id</uniqueKey>
<field name="solr_name" type="string" indexed="true" stored="true" />
Thực hiện
Lập chỉ mục
Đây là nơi thỏa thuận thực sự. Bạn cần lập chỉ mục dữ liệu từ MySQL đến Solr inorder để sử dụng Truy vấn Solr.
Bước 1: Chuyển đến Bảng quản trị Solr
Nhấn URL http: // localhost: 8983 / solr trên trình duyệt của bạn. Màn hình mở ra như thế này.
Như điểm đánh dấu chỉ ra, hãy vào Nhật ký đăng ký để kiểm tra xem có bất kỳ cấu hình nào ở trên đã dẫn đến lỗi không.
Bước 2: Kiểm tra Nhật ký của bạn
Ok, bây giờ bạn đang ở đây, vì bạn có thể có rất nhiều tin nhắn màu vàng (CẢNH BÁO). Hãy chắc chắn rằng bạn không có thông báo lỗi được đánh dấu màu đỏ. Trước đó, về cấu hình của chúng tôi, chúng tôi đã thêm một truy vấn chọn trên db-data-config.xml của chúng tôi , nói rằng nếu có bất kỳ lỗi nào trên truy vấn đó, thì nó sẽ hiển thị ở đây.
Tốt, không có lỗi. Chúng tôi tốt để đi. Hãy chọn bộ sưu tập1 từ danh sách như mô tả và chọn Dataimport
Bước 3: DIH (Trình xử lý nhập dữ liệu)
Sử dụng DIH, bạn sẽ kết nối với MySQL từ Solr thông qua tệp cấu hình db-data-config.xml từ giao diện Solr và truy xuất 10 bản ghi từ cơ sở dữ liệu được lập chỉ mục trên Solr .
Để làm điều đó, Chọn nhập đầy đủ và kiểm tra các tùy chọn Làm sạch và Cam kết . Bây giờ bấm vào Thực thi như được hiển thị.
Ngoài ra, bạn cũng có thể sử dụng truy vấn nhập đầy đủ trực tiếp như thế này ..
http://localhost:8983/solr/collection1/dataimport?command=full-import&commit=true
Sau khi bạn nhấp vào Thực thi , Solr bắt đầu lập chỉ mục các bản ghi, nếu có bất kỳ lỗi nào, nó sẽ báo Chỉ mục không thành công và bạn phải quay lại phần Ghi nhật ký để xem có gì sai.
Giả sử không có lỗi với cấu hình này và nếu việc lập chỉ mục hoàn tất thành công., Bạn sẽ nhận được thông báo này.
Bước 4: Chạy truy vấn Solr
Có vẻ như mọi thứ đều ổn, bây giờ bạn có thể sử dụng Truy vấn Solr để truy vấn dữ liệu được lập chỉ mục. Nhấp vào Truy vấn ở bên trái và sau đó nhấn nút Thực thi ở phía dưới.
Bạn sẽ thấy các bản ghi được lập chỉ mục như được hiển thị.
Truy vấn Solr tương ứng để liệt kê tất cả các bản ghi là
http://localhost:8983/solr/collection1/select?q=*:*&wt=json&indent=true
Vâng, có tất cả 10 hồ sơ được lập chỉ mục. Giả sử, chúng tôi chỉ cần tên bắt đầu bằng Ja , trong trường hợp này, bạn cần nhắm mục tiêu tên cột solr_name
, do đó truy vấn của bạn sẽ như thế này.
http://localhost:8983/solr/collection1/select?q=solr_name:Ja*&wt=json&indent=true
Đó là cách bạn viết Solr Queries. Để đọc thêm về nó, kiểm tra bài viết đẹp này .