2013-05-18 46 views
49

Tôi đang tìm kiếm một mã nguồn mở mã nguồn mở (với LGPL hoặc giấy phép cho phép) cho một ứng dụng node.js, giống như Lucene. Tôi đang tìm kiếm trong quá trình lập chỉ mục và tìm kiếm và không quan tâm đến việc lập chỉ mục các máy chủ như Sphinx hoặc Solr.Có công cụ lập chỉ mục/tìm kiếm tốt cho Node.js không?

Tôi không ngại tạo các ràng buộc cho thư viện C/C++ vì vậy tôi cũng mở cho các loại đề xuất đó.

Cho đến nay tôi đã tìm thấy

  • nút-clucene mà dường như không được tích cực duy trì nữa (và có một số vấn đề mở)
  • tôi có thể tạo ra ràng buộc của riêng mình cho CLucene nhưng có vẻ như được duy trì khá thưa thớt và phiên bản hiện tại của nó cũng khá đằng sau Java Lucene
  • Apache Lucy có vẻ như được thiết kế cho mục đích tạo liên kết cho d ynamic ngôn ngữ, nhưng cho đến nay họ không có bindings nút (cũng không phải là một API C) và tôi đã không tìm thấy bất kỳ tài liệu về việc tạo bindings. Tôi cũng không tìm thấy bất kỳ điểm chuẩn nào về hiệu suất của nó.
  • nút tìm kiếm mà dường như bị bỏ rơi
  • jsii mà có vẻ là vẫn còn là một nguyên mẫu và cũng bị bỏ rơi
  • fullproof mà chỉ dùng để chạy trong một broswer web
  • lunr.js dường như chỉ cho phép tuần tự hóa toàn bộ chỉ mục, vì vậy không thể mở rộng được

Tôi có thể " cuộn của riêng tôi ", nhưng tôi muốn sử dụng một giải pháp đã tồn tại.

CHỈNH SỬA: Tại sao tôi không quan tâm đến máy chủ chỉ mục độc lập: Tôi sử dụng cơ sở dữ liệu lưu trữ khóa-giá trị nhanh trong quá trình, vì vậy sẽ khá lãng phí khi phải thực hiện quá trình truy vấn.

Trả lời

11

Bạn có thể giải thích lý do bạn không quan tâm đến việc sử dụng chỉ mục bên ngoài không? Để tìm kiếm văn bản đầy đủ, tôi luôn hoàn toàn sử dụng khả năng lập chỉ mục văn bản đầy đủ của PostgreSQL - rất nhanh, việc lập chỉ mục không yêu cầu cập nhật toàn bộ chỉ mục (như Solr) và kết quả được trả về nhanh hơn các giải pháp dựa trên Lucene (chẳng hạn như Elastic Search).

Nhưng nếu bạn thực sự muốn làm điều đó trong quá trình, bạn có thể muốn xem Lunr: http://lunrjs.com/ - nó hoạt động trong Nút, không chỉ trong trình duyệt.

Edit: Đây là nơi tôi có số liệu thống kê của tôi trên Postgres là nhanh hơn so với Lucene: http://fr.slideshare.net/billkarwin/full-text-search-in-postgresql - xem Trượt 49.

Edit: Không chắc những loại tốc độ mà bạn đang tìm kiếm cho vào/ra của quá trình, nhưng cơ sở dữ liệu PostgreSQL của chúng tôi có thể thực hiện 100 nghìn truy vấn mỗi giây mà không làm đổ mồ hôi và thậm chí không có trên ổ SSD. Có lẽ bạn đang suy nghĩ quá mức về hiệu suất của bạn cần - sau khi tất cả các bạn cần phải đi đến nhiều nút (hoặc sử dụng cluster để tận dụng lợi thế của tất cả các CPU), bạn sẽ cần phải bỏ quá trình anyway.

+1

"và kết quả được trả về nhanh hơn các giải pháp dựa trên Lucene (chẳng hạn như Tìm kiếm Đàn hồi)." Bất kỳ điểm chuẩn nào để sao lưu? Tôi gần như chắc chắn hầu hết các đánh giá sẽ có nó theo cách khác xung quanh. –

+0

Tôi sử dụng cơ sở dữ liệu trong quá trình rất nhanh cho tốc độ của nó. Vì vậy, có một chỉ số quá trình sẽ làm cho nó khá lố bịch. – Venemo

+1

Tôi đã xem lunr, vâng, nhưng hiện tại nó không hỗ trợ sự bền bỉ của chỉ mục mà không phải tuần tự hóa toàn bộ chỉ mục. – Venemo

12

Vâng, kiểm tra mới được phát hành Norch

Norch được dựa trên các mô-đun search-index cho Node.js, đó là lần lượt dựa trên chỉ số LevelDB mạnh mẽ của Google.

CHỈNH SỬA: Sử dụng search-index module để có khả năng tìm kiếm "đang xử lý" nhanh.

+0

'Norch' thêm gì vào đầu' chỉ mục tìm kiếm'? – Venemo

+0

Norch làm cho chỉ mục tìm kiếm có sẵn trên HTTP và thêm một vài thứ GUI khác. – Fergie

+1

Vui lòng đọc câu hỏi, tôi đã nói * Tôi đang tìm kiếm quá trình lập chỉ mục và tìm kiếm và không quan tâm đến việc lập chỉ mục máy chủ * – Venemo

15

Chỉ cần cập nhật câu trả lời của tôi ở trên vì có quá nhiều thảo luận nên tôi không muốn cập nhật này bị mất.

Bạn có thể tải nó ở đây: https://github.com/fergiemcdowall/norch

+0

Câu trả lời ngắn gọn: không; Câu trả lời dài hơn: Các loại thức ăn gia súc có liên quan đến tài liệu và cho phép chủ sở hữu kiểm soát đơn giản nhưng mạnh mẽ về mức độ liên quan trong xác định; Câu trả lời dài nhất: Thức ăn gia súc không hỗ trợ phân loại trên các trường trừu tượng bởi vì điều đó đã được xem là vượt qua phạm vi cốt lõi của dự án. Tuy nhiên, có thể tại một số điểm trong chức năng sắp xếp tương lai sẽ được thêm vào, vì có nhu cầu về nó. – Fergie

+0

Bạn tính toán mức độ liên quan của tài liệu như thế nào? – Venemo

+0

Woah there @ user2020565! Thức ăn gia súc là hoàn toàn có thể truy cập từ nhiều quá trình :) – Fergie

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