Ответ 1
Просто обновление моего ответа выше, так как было так много дискуссий, я не хотел, чтобы это обновление терялось.
Вы можете скачать его здесь: https://github.com/fergiemcdowall/norch
Я ищу хороший механизм индексирования с открытым исходным кодом (с LGPL или разрешающей лицензией) для приложения node.js, что-то вроде Lucene. Я ищу индексирование и поиск в процессе и не интересуюсь серверами индексирования, такими как Sphinx или Solr.
Я не боюсь создавать привязки для библиотеки C/С++, поэтому я также открыт для этих предложений.
До сих пор я нашел
Я мог бы "сворачивать свой собственный", но я предпочел бы использовать уже существующее решение.
EDIT: Почему меня не интересует автономный сервер индексирования: я использую быструю базу данных хранения ключевого значения в процессе, поэтому для запросов было бы довольно ненужным тратить время.
Просто обновление моего ответа выше, так как было так много дискуссий, я не хотел, чтобы это обновление терялось.
Вы можете скачать его здесь: https://github.com/fergiemcdowall/norch
Да, проверьте недавно выпущенный Norch
Norch основан на модуле search-index для node.js, который, в свою очередь, основан на мощном индексе DOD уровня Google.
EDIT: используйте поисковый индекс для быстрого поиска в процессе.
Можете ли вы объяснить, почему вы не заинтересованы в использовании внешнего индекса? Для полнотекстового поиска я всегда возвращаюсь к использованию возможностей полнотекстового индексирования 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. Возможно, вы слишком задумываетесь о своих потребностях в производительности - ведь после того, как вам нужно перейти на несколько узлов (или использовать кластер, чтобы использовать преимущества всех процессоров), вам все равно придется сбрасывать процесс.
Полнотекстовый поиск, является чисто написанным в JS модулем node для полнотекстового поиска. Здесь вы можете найти текущую ссылку репозитория git: https://github.com/frankred/node-full-text-search-light