2009-08-11 41 views
42

Tôi đang cố gắng quyết định công nghệ tìm kiếm/lập chỉ mục nguồn mở cho dự án .Net. Có vẻ như tiêu chuẩn ngoài kia cho các dự án Java là Lucene, nhưng theo như .Net có liên quan, dự án Lucene.Net có vẻ khá không hoạt động. Đây có phải là lựa chọn tốt nhất không? Hoặc có những lựa chọn thay thế khả thi khác?Công nghệ tìm kiếm Net tốt nhất và năng động nhất là gì?

+4

+1: Tôi thực sự quan tâm đến điều này. Tôi đã cố gắng đi xuống con đường của việc sử dụng bộ xử lý chỉ mục văn bản đầy đủ của SQL Server. Nó hoạt động tốt với tìm kiếm các tập tin nhị phân như pdf, doc, vv; nhưng nó là con chó chậm khi tìm kiếm các cột thông thường. 6 giây để tìm kiếm một bảng hàng 7000, theo ý kiến ​​của tôi, không thể chấp nhận. Hiện tại, tôi chỉ sử dụng các giá trị LIKE '%' đơn giản để tìm kiếm nhanh chóng. – NotMe

Trả lời

23

Trong khi chúng không có bản phát hành đầy đủ (tức là tài liệu đầy đủ, cập nhật trang web) của Lucene.Net trong một thời gian dài, vẫn còn cam kết mới cho kho SVN của nó. Phiên bản mới nhất (2.3.2) chẳng hạn được gắn thẻ vào ngày 24/7/09 (see here). Vì sự phát triển vẫn hoạt động, tôi sẽ sử dụng nó cho các dự án tìm kiếm toàn văn mới.

+0

Tôi thấy rằng đây sẽ là câu trả lời. Lucene.Net nó là sau đó. Cảm ơn tất cả mọi người! – jamesaharvey

2

Hãy xem www.searcharoo.net. Nó có một trình thu thập thông tin và các tính năng như công việc bắt nguồn, lập chỉ mục các tài liệu văn phòng/PDF. Tác giả rất tích cực trong các bài viết từ vựng và trả lời các câu hỏi khá nhanh chóng.

6

lucene.net nhất thiết sẽ bị trễ do java vì đó là cổng. Tôi cũng không thích làm thế nào cổng lucene là một bản sao thẳng mặc dù nó làm cho nó dễ dàng hơn trên các tài liệu tôi cho là. Một cái gì đó để xem xét là sử dụng Solr nếu bạn không cần tích hợp siêu chặt chẽ (nhị phân). Tôi đã sử dụng nó trước đây với thành công tốt. Nó vẫn được hỗ trợ bởi Lucene nhưng tôi nghĩ rằng nó là tốt hơn vì nó có một số tính năng tốt hơn. Bạn có thể sử dụng nó từ .net thông qua một điểm cuối HTTP.

Một câu hỏi đặt ra cho chính bạn là những gì bạn thực sự cần/muốn trong giải pháp tìm kiếm. Có rất nhiều cách để thực hiện tìm kiếm và không phải tất cả các giải pháp đều phù hợp với mọi tình huống.

3

Mặc dù nó không net tôi sẽ khuyên bạn sử dụng Solr như nó được xây dựng trên Lucene và sẽ được đơn giản để tích hợp cho thực tế nó sẽ trả về XML/HTTP và JSON

6

SQLite có FTS3 (Full Text Search 3) mà có thể làm những gì bạn muốn nó làm. Tôi không có kinh nghiệm trực tiếp với nó, nhưng tôi tin rằng nó đã được phát triển một cách rõ ràng để làm những gì Lucene làm, ít nhất là trong trường hợp đơn giản. Tôi không tin rằng bạn có thể thay đổi tokenizer hoặc bất cứ điều gì (mà không cần sửa đổi mã nguồn, anyway), nhưng nó là một lựa chọn.

+1

Chúng tôi sử dụng SQLite FTS trong sản phẩm của chúng tôi và nó rất tốt và nhanh hơn nhiều so với Lucene.NET cho các trường hợp cụ thể của chúng tôi. –

11

tôi biết đây không phải là mã nguồn mở, nhưng nó là một miễn phí và rất toàn diện cung cấp từ Microsoft:

Microsoft Search Server 2008 Express

  • Out-of-the- sự liên quan của hộp.

    Giao diện được bản địa hóa.

    Trải nghiệm tìm kiếm mở rộng.

    Không giới hạn tài liệu được đặt trước.

    Lập chỉ mục tuyên truyền liên tục.

    Đầu nối lập chỉ mục ngoài hộp

    Tóm tắt nội dung.

    Nhấn làm nổi bật.

    Đặt cược và định nghĩa tốt nhất.

    Chỉnh sửa truy vấn.

    Thu gọn trùng lặp.

    Lọc theo thuộc tính.

    Lọc theo ngôn ngữ.

    Sắp xếp theo ngày.

    E-mail/RSS cảnh báo

+2

Tuy nhiên, giới hạn kích thước DB có thể dễ dàng đạt được nếu bạn định sử dụng điều này cho chỉ mục tìm kiếm. Nó cũng không được thiết kế chủ yếu cho việc lập chỉ mục văn bản và trong khi lập chỉ mục văn bản có thể hoạt động, nó sẽ hoạt động khá kém so với một thứ gì đó như lucene. –

+1

Thú vị- Tôi không biết MS đã làm một sản phẩm như thế này. – RichardOD

+1

tìm kiếm ms ... yuck! – ADAM

3

Như tôi hiểu, bạn cần phải "chỉ là" một chỉ mục toàn văn bản trên cơ sở dữ liệu hiện tại của bạn, và SQL Server tìm kiếm toàn văn trong nguyên tắc làm việc cho bạn, nhưng triển khai/thiết lập hiện tại của bạn quá chậm.

Nếu tôi là bạn, tôi sẽ không đi theo một cách tiếp cận hoàn toàn khác (chỉ cần nghĩ về mớ hỗn độn để giữ chỉ mục bên ngoài đồng bộ với cơ sở dữ liệu của bạn hoặc tham gia kết quả truy vấn từ cả hai v.v.). Cố gắng khắc phục vấn đề hiệu suất với SQL Server, vì không ai cho rằng 6sec để tìm kiếm hàng 7k là từ cuối cùng cho giải pháp lớp doanh nghiệp được sử dụng cho một số cơ sở dữ liệu lớn nhất xung quanh ... Có thể thử hỏi một câu hỏi mới về những cạm bẫy phổ biến với tính năng này (tôi không phải là chuyên gia về vấn đề này) và bạn có thể kết thúc bằng một bản sửa lỗi đơn giản thay vì xây dựng lại toàn bộ kiến ​​trúc tìm kiếm của bạn;)

0

Nếu bạn không thực sự nhấn mạnh vào. Net bạn có thể cho Sphinx một thử. Mã nguồn mở và có sẵn cho tất cả các nền tảng (Windows/Linux).

4

Lucene.net được triển khai trong nHibernate, vì vậy nếu bạn cũng đang tìm kiếm trình vẽ O/R, kết hợp có thể đáng để kiểm tra kỹ hơn.

Hiện tại chúng tôi đang phát triển mẫu thử nghiệm và cấu hình Lucene được thực hiện trong một vài phút (chúng tôi sử dụng chế độ nhibernate thông thạo).

+0

Tôi cũng đang thử nHibernate. Cảm ơn bạn về thông tin. – jamesaharvey

5

Sau khi sử dụng Lucene.Net trong một vài dự án, tôi cũng muốn thêm đề xuất biên dịch phiên bản Java của lucene thành mã .net với IKVM.NET. Nó hoạt động tuyệt vời, và bạn không bao giờ phải lo lắng về việc bị lỗi thời đối với phiên bản Java. Bạn cũng có tùy chọn biên dịch tất cả các thư viện bổ sung và sử dụng chúng (tôi đang sử dụng công cụ tìm kiếm GIS trong một dự án).

+1

Bạn có nghĩ đến việc tạo một dự án codeplex cho việc này không? Có lẽ thiết lập một xây dựng định kỳ – Mikos

+0

+1 cho tùy chọn này rõ ràng nhưng dễ dàng bỏ qua, cho Lucene.NET Tôi đã không nghĩ về điều này bản thân mình chưa; bạn đã gặp phải bất kỳ trở ngại nào có thể làm cho điều này trở nên khó khăn đối với các cửa hàng không phải Java hay là kinh nghiệm của bạn khi sử dụng IKVM cho một dự án có kích thước mượt mà như nó nghe như thế nào? –

+1

@Mikos - ý tưởng khá tiện lợi; trong trường hợp điều này hóa ra là khả thi với một dự án có kích thước của Lucene, nó có thể là ưu tiên tốt cho cách tiếp cận này - hoặc là cách tiếp cận này phổ biến và tôi đã bỏ lỡ? –

1

Tôi từng sử dụng DotLucene nhưng gặp phải một số vấn đề. một điều quan trọng là một thực tế là nó đòi hỏi sự tin tưởng đầy đủ để chạy.

Tôi có kể từ khi chuyển sang sử dụng SearchAroo: http://www.searcharoo.net/

nó sử dụng một lưu trữ dữ liệu XML, và tôi đã tìm thấy hiệu quả của nó là rất giống với chấm Lucene.

nếu bạn đang tìm kiếm một tùy chọn khác, tôi chắc chắn sẽ xem xét.

Các vấn đề liên quan