Полнотекстовый поиск статических файлов HTML на CD-Rom с помощью javascript

Я поставлю набор статических HTML-страниц на CD-Rom; эти страницы должны быть полностью доступны для просмотра без доступа к Интернету.

Я хотел бы предоставить полнотекстовый поиск (Lucene-like) для содержания этих страниц, который должен "просто работать" с CD-Rom без установки программного обеспечения на клиентской машине.

Реализация поисковой системы в javascript была бы идеальным решением, но у меня возникли проблемы с поиском любого, что выглядит твердым/текущим/популярным...?

Я нашел: + jsFind + js-search

но оба проекта кажутся довольно неактивными?

Другим решением, помимо конкретной поисковой системы в javascript, была бы возможность доступа к локальным индексам Lucene из javascript: сами индексы были бы построены с Lucene и скопированы на CD-Rom вместе с файлами HTML.

Изменить: построил сам (см. ниже).

Ответы

Ответ 1

На самом деле я сам его создал.

Существующие решения (которые я мог найти) были неубедительными.

Я хотел иметь возможность искать очень длинное дерево (ul/li/ul...), которое отображается как одна страница; он содержит более 5000 элементов.

Звучит немного странно, чтобы отображать такое длинное дерево на одной странице, но на самом деле с коллапсом/расширением его гораздо более интуитивно понятным, чем отдельные страницы, и поскольку мы в автономном режиме, время загрузки не является проблемой (время разбора, хотя, но Chrome поражает: -)

Функция "поиска", предоставляемая современными браузерами (FF и Chrome в любом случае), имеет две большие проблемы: они просматривают только видимые элементы на странице и не могут искать непоследовательные слова.

Я хочу иметь возможность искать свернутые элементы (не видимые на экране); Я хочу найти "одну две три" при поиске "одной тройки" (точно так же, как с Google/Lucene); и я хочу открыть только ветки дерева, содержащие найденные предметы.

Итак, я сделал это:

  • создать инвертированный индекс слов ↔ идентификаторы элементов из списка (через xslt) (около 4500 уникальных слов в документе)
  • преобразуйте этот индекс в кучу массивов javascript (одно слово = один массив, содержащий идентификаторы)
  • при поиске, пересекайте массивы, представленные поисковыми словами
  • Шаг 3 возвращает массив идентификаторов, который я могу открыть/выделить

Он делает то, что мне нужно, и это очень быстро. Еще лучше, поскольку он ищет от независимого "индекса" (массивы идентификаторов), он может выполнять поиск, когда список даже не загружен в браузере!

Ответ 2

Первоначальный вопрос задан в '09

По состоянию на 14, lunr.js описывается как:

Простой полнотекстовый поиск в вашем браузере

Смотрите Демо и Github repo.


ОБНОВЛЕНИЕ Сентябрь 2016 года: легкий нечеткий поиск в JavaScript http://fusejs.io/

Ответ 3

Zoom Search Engine может сделать это.

Я не использовал версию CD, но я использую версию PHP для своего сайта, и она работает очень хорошо.

Ответ 6

Fullproof - отличная библиотека javascript, которая может работать как текстовый поиск для вас. Это было бы полезно в этом контексте, но оно также полезно в модели "толстый javascript-webpage".