Tôi có truy vấn đang thực hiện ILIKE trên một số trường chuỗi 11 hoặc văn bản của bảng không lớn (500 000), nhưng đối với ILIKE rõ ràng là quá lớn, truy vấn tìm kiếm mất 20 giây. Cơ sở dữ liệu là postgres 8.4Hibernate Search, Lucene hoặc bất kỳ giải pháp thay thế nào khác?
Tôi cần triển khai tìm kiếm này nhanh hơn nhiều.
gì lóe lên trong óc tôi:
tôi làm cột TVECTOR thêm được lắp ráp từ tất cả các cột mà cần phải được tìm kiếm và tạo ra các chỉ mục văn bản đầy đủ về nó. Tìm kiếm toàn văn khá nhanh. Nhưng ... Tôi không thể ánh xạ loại TVECTOR này trong .hbms của tôi. Vì vậy, ý tưởng này đã giảm (trong mọi trường hợp tôi thaught nó nhiều hơn như là một giải pháp tạm thời).
Tìm kiếm Hibernate. (Nghe nói về nó lần đầu tiên ngày hôm nay) Nó có vẻ promissing, nhưng tôi cần ý kiến kinh nghiệm về nó, vì tôi không muốn nhận được vào API mới, có thể không phải là đơn giản nhất, cho một cái gì đó có thể được thực hiện đơn giản.
Lucene
Trong mọi trường hợp, điều này đã xảy ra bây giờ với bảng này, nhưng tôi muốn giải pháp là chung chung hơn và áp dụng đối với trường hợp trong tương lai liên quan đến tìm kiếm văn bản đầy đủ.
Tất cả lời khuyên được đánh giá cao!
Thanx
thanx để giải thích, một câu hỏi ngắn nữa, tôi muốn có thể tìm kiếm trên vài trường chuỗi. Liệu nó có ý nghĩa để lưu trữ tất cả các trường khác vào chỉ mục, nhưng không thể tìm kiếm được, và sau đó khi tôi nhấn, tôi lấy đối tượng từ đó, hoặc tôi chỉ cần lấy IDS và vào cơ sở dữ liệu để lấy chúng ? – Julia
@Julia Bạn chỉ nên lập chỉ mục các trường mà bạn muốn tìm kiếm. Bạn nói với Hibernate Search cái @DocumentId (cũng là @Id) của thực thể được lập chỉ mục là gì. Hibernate sau đó sẽ sử dụng id này để có được thực thể từ cơ sở dữ liệu (hoặc bộ nhớ cache phiên) mà bạn không lo lắng về nó. Trong thực tế, Hibernate Search có một chuỗi tìm kiếm và trả về cho bạn các thực thể miền phù hợp với tìm kiếm đó. Neat huh? –
gọn gàng thực sự, thanx! – Julia