Подтвердить что ты не робот

Есть ли хорошая индексация/поисковая система для Node.js?

Я ищу хороший механизм индексирования с открытым исходным кодом (с LGPL или разрешающей лицензией) для приложения node.js, что-то вроде Lucene. Я ищу индексирование и поиск в процессе и не интересуюсь серверами индексирования, такими как Sphinx или Solr.

Я не боюсь создавать привязки для библиотеки C/С++, поэтому я также открыт для этих предложений.

До сих пор я нашел

  • node -clucene, который, похоже, больше не поддерживается (и имеет несколько открытых проблем).
  • Я мог бы создать свою собственную привязку для CLucene, но, похоже, она довольно редко поддерживается, и ее текущая версия также вполне позади Java Lucene
  • Apache Lucy, который, как представляется, предназначен для создания привязок для динамических языков, но до сих пор у них нет привязок node (а не C API), и у меня нет нашел какие-либо документы о создании привязок. Я также не нашел каких-либо критериев производительности.
  • node -search, который кажется заброшенным
  • jsii, который по-прежнему остается прототипом и также оставлен
  • полнофункциональный, предназначенный только для работы в веб-браузере
  • lunr.js, который, по-видимому, разрешает сериализацию всего индекса, поэтому он не масштабируется

Я мог бы "сворачивать свой собственный", но я предпочел бы использовать уже существующее решение.

EDIT: Почему меня не интересует автономный сервер индексирования: я использую быструю базу данных хранения ключевого значения в процессе, поэтому для запросов было бы довольно ненужным тратить время.

4b9b3361

Ответ 1

Просто обновление моего ответа выше, так как было так много дискуссий, я не хотел, чтобы это обновление терялось.

Вы можете скачать его здесь: https://github.com/fergiemcdowall/norch

Ответ 2

Да, проверьте недавно выпущенный Norch

Norch основан на модуле search-index для node.js, который, в свою очередь, основан на мощном индексе DOD уровня Google.

EDIT: используйте поисковый индекс для быстрого поиска в процессе.

Ответ 3

Можете ли вы объяснить, почему вы не заинтересованы в использовании внешнего индекса? Для полнотекстового поиска я всегда возвращаюсь к использованию возможностей полнотекстового индексирования PostgreSQL - он очень быстрый, индексирование не требует полного обновления индекса (например, Solr), а результаты возвращаются быстрее, чем решения на основе Lucene (такие как Elastic Search).

Но если вы действительно хотите сделать это в процессе, вы, вероятно, захотите посмотреть на Lunr: http://lunrjs.com/ - он работает в Node, а не только в браузере.

Изменить: Здесь, где я получил статистику по Postgres быстрее, чем Lucene: http://fr.slideshare.net/billkarwin/full-text-search-in-postgresql - см. Слайд 49.

Изменить: не уверен, какую скорость вы ищете для/вне процесса, но наша база данных PostgreSQL может делать 100 тыс. запросов в секунду, не нарушая пота, и это даже не на SSD. Возможно, вы слишком задумываетесь о своих потребностях в производительности - ведь после того, как вам нужно перейти на несколько узлов (или использовать кластер, чтобы использовать преимущества всех процессоров), вам все равно придется сбрасывать процесс.

Ответ 4

Полнотекстовый поиск, является чисто написанным в JS модулем node для полнотекстового поиска. Здесь вы можете найти текущую ссылку репозитория git: https://github.com/frankred/node-full-text-search-light