2008-09-03 59 views
14

Bạn có thể đề xuất một số thư viện tìm kiếm văn bản mờ có trọng lượng nhẹ không?Thư viện tìm kiếm mờ nhẹ

Điều tôi muốn làm là cho phép người dùng tìm dữ liệu chính xác cho các cụm từ tìm kiếm có lỗi chính tả.

Tôi có thể sử dụng các công cụ tìm kiếm toàn văn như Lucene, nhưng tôi nghĩ đó là quá mức cần thiết.

Edit:
Để làm cho câu hỏi rõ ràng hơn ở đây là một kịch bản chính cho thư viện mà:
Tôi có một danh sách lớn các chuỗi. Tôi muốn để có thể tìm kiếm trong danh sách này (một cái gì đó giống như MSVS 'intelliSense) nhưng nó sẽ có thể lọc danh sách này bằng chuỗi mà không phải là hiện diện trong nó, nhưng gần đủ để một số chuỗi đó là trong danh sách.
Ví dụ:

  • Red
  • Xanh
  • xanh

Khi tôi gõ 'Gren' hoặc 'Geen' trong một hộp văn bản, tôi muốn nhìn thấy 'xanh' trong kết quả bộ.

Ngôn ngữ chính cho dữ liệu được lập chỉ mục sẽ là tiếng Anh.

Tôi nghĩ rằng Lucene là nặng cho nhiệm vụ đó.

Cập nhật:

tôi tìm thấy một sản phẩm phù hợp với yêu cầu của tôi. Đó là ShuffleText.
Bạn có biết bất kỳ giải pháp thay thế nào không?

Trả lời

0

@aku - liên kết đến thư viện âm thanh đang hoạt động ở ngay dưới cùng của trang.

Đối với khoảng cách Levenshtein, Wikipedia article on that cũng có các triển khai được liệt kê ở dưới cùng.

1

Soundex rất 'tiếng Anh' trong mã hóa - Daitch-Mokotoff hoạt động tốt hơn cho nhiều tên, đặc biệt là tên Châu Âu (Đức) và Do Thái. Trong thế giới trung tâm của Anh, đó là những gì tôi sử dụng.

Wiki here.

3

Lucene rất có thể mở rộng — có nghĩa là tốt cho các ứng dụng nhỏ. Bạn có thể tạo chỉ mục trong bộ nhớ rất nhanh nếu đó là tất cả những gì bạn cần.

Để tìm kiếm mờ, bạn thực sự cần phải quyết định thuật toán nào bạn muốn sử dụng. Với việc truy xuất thông tin, tôi sử dụng kỹ thuật n-gram với Lucene thành công. Nhưng đó là một kỹ thuật lập chỉ mục đặc biệt, không phải là một "thư viện".

Nếu không biết thêm về đơn đăng ký của bạn, bạn sẽ không dễ dàng đề xuất một thư viện phù hợp. Bạn đang tìm kiếm bao nhiêu dữ liệu? Định dạng dữ liệu là gì? Tần suất dữ liệu được cập nhật?

1

Bạn không nói rõ nền tảng phát triển của bạn, nhưng nếu PHP của nó sau đó đề nghị bạn nhìn vào lubrary Zend Lucene:

http://ifacethoughts.net/2008/02/07/zend-brings-lucene-to-php/ http://framework.zend.com/manual/en/zend.search.lucene.html

Vì nó đèn của nó xa nhẹ hơn Lucene trên Java, và có thể dễ dàng được mở rộng cho các loại tệp khác, miễn là bạn có thể tìm thấy thư viện chuyển đổi hoặc bộ chuyển đổi dòng cmd - có rất nhiều giải pháp PMNM xung quanh để thực hiện việc này.

1

Hãy thử dùng Walnutil - dựa trên API Lucene - được tích hợp với SQL Server và Oracle DBs. Bạn có thể tạo bất kỳ loại chỉ mục nào và sau đó sử dụng nó. Để tìm kiếm đơn giản, bạn có thể sử dụng một số phương thức từ walnutilsoft, đối với các trường hợp tìm kiếm phức tạp hơn, bạn có thể sử dụng API Lucene. Xem ví dụ dựa trên web, nơi đã được sử dụng các chỉ mục được tạo từ Công cụ Walnutil. Ngoài ra, bạn có thể thấy một số ví dụ mã được viết trên Java và C# mà bạn có thể sử dụng nó để tạo kiểu tìm kiếm khác. Công cụ này miễn phí. http://www.walnutilsoft.com/

0

Giải pháp nhẹ, mạnh mẽ là sphinx.

Nhỏ hơn thì Lucene và nó hỗ trợ định hướng.

Nó được viết bằng C++, nó nhanh chóng, chiến đấu thử nghiệm, có thư viện cho mỗi env và nó được sử dụng bởi các công ty lớn, như craigslists.org

2

Tôi không chắc Lucene thích hợp để tìm kiếm mờ như thế nào, thư viện tùy chỉnh sẽ là lựa chọn tốt hơn. Ví dụ: tìm kiếm này được thực hiện bằng Java và hoạt động khá nhanh, nhưng tùy chỉnh được thực hiện cho tác vụ như vậy: http://www.softcorporation.com/products/people/

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