tôi phải làm tìm kiếm văn bản đầy đủ trong NHibernateNHibernate + SQLServer toàn văn tìm kiếm
Đối với sau hoạt động trước đây tôi đang sử dụng Lucene.Net
Tôi có một bảng gọi là ứng cử viên
Đối với truy vấn văn bản đầy đủ Lucene sẽ trả về tất cả Id ứng cử viên từ chỉ mục lucene và dạng id mà tôi đưa vào truy vấn trong ứng cử viên và trả lại kết quả
Nhưng vấn đề là có hơn 10 Thiếu lý lịch ứng viên có sẵn để Lucene rất chậm vì giá trị bộ lọc từ 10 hàng Lc và đặt giá trị trả về cho trong truy vấn đối với ứng cử viên và một lần nữa lọc ứng cử viên đang tiến hành quá nhiều thời gian
Ngoài ra tôi có một tiêu chí phân trang và cho mỗi trang tôi trở 100 ứng cử viên
bây giờ tôi thêm mới bảng candidate_full_text trong bảng mà tôi cấu hình chỉ mục văn bản đầy đủ trong SQLServer 2000 bây giờ tôi muốn truy vấn sử dụng NHibernate DetachedCriteria như sau
1) Select candidate with some filters
2) Execute the function ContainsTable for candidate_full_text table
(which returns candidate tables id as key and rank of occurrence of the search string)
3) join the result from 1 & 2
4) Apply paging criteria (ie return 1st 100,2nd 100,3rd 100.. etc) according to page no
5) return the result by order of rank column (which is return by ContainsTable)
điều sau tôi phải làm trong truy vấn duy nhất với DetachedCriteria Và cột quan trọng đối với chỉ số candidate_full_text là ứng cử viên bảng id .. Ở đây tôi đưa ra mô hình bảng 1) ứng cử viên (trường Min)
Id - int,
Tên - varchar,
Dob - datetime,
2) candidate_full_text
id - int,
candidate_resume_full_text -ntext, (cấu hình chỉ số toàn văn)
candidate_id - int
Tôi sẽ không tính vào tìm kiếm toàn văn bản, đặc biệt là trên Sql Server 2000, nhanh hơn lucene. Lucene nói chung là rất nhanh, ngay cả đối với số lượng dữ liệu khổng lồ. Bạn đã xem xét loại bỏ truy vấn IN bằng cách đặt tất cả các dữ liệu cần thiết trong lucene, để bạn tránh đánh máy chủ Sql hoàn toàn? –
Tôi sẽ tìm kiếm sqlserver fulltext từ lucene để hợp lý hơn là lý do kỹ thuật .. tôi không thể đặt tất cả dữ liệu trong lucene vì orm im sử dụng nhibernate..im sử dụng lucene cho chỉ một mục đích tức là tìm kiếm toàn văn – Anand
Tôi đồng ý với Jonas H. rằng Lucene nói chung là một giải pháp thực hiện nhiều hơn SQL FTS. Tuy nhiên, nếu hiệu suất của SQL FTS là đầy đủ, sử dụng nó mang lại cho bạn lợi ích của việc có thể liên kết kết nối FTS (thông qua hàm CONTAINSTABLE hoặc FREETEXTTABLE) với dữ liệu quan hệ khác, làm cho việc lọc và nhóm phức tạp hơn . –