Собственная поисковая система без Java для моих статических веб-сайтов

Я хочу самостоятельно разместить поисковую систему, которая индексирует мои статические веб-сайты.

Я не хочу использовать CMS (которая обычно имеет встроенную поисковую систему) для этих сайтов и не хочу направлять своих посетителей к сторонним службам поисковых систем.

Это не обязательно должна быть удобная поисковая система (например, Google, Bing и т. д.), она в основном предназначена для опытных пользователей, поэтому может потребоваться сложный синтаксис поиска.

Требования

Формальности:

  • Поисковик должен быть FLOSS.

  • Он должен работать на сервере GNU/Linux.

  • Он не должен использовать Java (я знаю, что есть несколько хороших проектов поисковых систем на Java, но, к сожалению, мой хост не поддерживает его).

Серверная часть:

  • Поисковая система должна индексировать (X)HTML5. Поддержка других форматов не требуется.

  • Я не хочу, чтобы сканер самостоятельно находил мои страницы. Вместо этого я хочу предоставить список URL-адресов, которые следует сканировать (в идеале с поддержкой одного из форматов sitemaps.org ).

  • Я не хочу добавлять метаданные о документах где-то еще, кроме самих документов.

Внешний интерфейс:

  • Поисковая система не должна требовать JavaScript (за исключением дополнительных функций).
  • Он не должен устанавливать файлы cookie (если только пользователь явно не отправляет форму настроек или что-то подобное).

Мой список желаний

  • Индексация: в дополнение к полному тексту он должен индексировать как можно больше сигналов (например, в виде пар «имя-значение»), таких как метатеги, RDFa/JSON-LD, семантические элементы и т. д.

  • SERP: я хочу иметь возможность определять, как должны выглядеть результаты в зависимости от проиндексированных данных. Подобно расширенным сниппетам Google . Например: показать изображение, список, короткую таблицу и т. д.

  • Ранжирование: я хотел бы иметь возможность настроить алгоритм ранжирования, например, присваивая каждому полю определенный балл/приоритет.

  • Операторы поиска: он должен, по крайней мере, поддерживать логическое значение AND/ OR/ NOTи скобки (например, (laptop OR notebook) (review OR reviews) -netbook). Чем больше операторов, тем лучше (поиск по фразе/диапазону/близости; поиск по полю; специальные символы, регистрозависимость и т. д.).

Явы нет? Нет JavaScript? Как это будет работать? Я что-то упускаю? Извините, если это звучит грубо, это не предназначено. Я, наверное, просто тупой, как обычно :-) Я полагаю, вы проверили SourceForge и т. д. Ps он должен работать в браузере, не так ли?
@Mawg: Backend: вместо Java он может использовать любой другой язык программирования, обычно доступный на веб-серверах, например, PHP, Python, Ruby или Perl. --- Внешний интерфейс: не должно быть необходимости в JavaScript - это просто простая HTML-форма для поля поиска и простой HTML-список для результатов. --- И да, он должен использоваться в браузере -- я интегрирую его в свой веб-сайт.

Ответы (2)

Как насчет старого доброго ht:dig ?

Последний выпуск выпущен в 2004 году, поэтому я не уверен, как он индексирует новые элементы, представленные в HTML5.

Поддержка текстовых форматов, отличных от HTML (PDF, DOCX...), также неоптимальна, но этого не было в вашем списке требований.

Я также рекомендую sphinx — см. sphinxsearch.com

Sphinx — это сервер полнотекстового поиска с открытым исходным кодом, разработанный с нуля с учетом производительности, релевантности (то есть качества поиска) и простоты интеграции. Он написан на C++ и работает в Linux (RedHat, Ubuntu и т. д.), Windows, MacOS, Solaris, FreeBSD и некоторых других системах.

Sphinx позволяет быстро и легко пакетно индексировать и искать данные, хранящиеся в базе данных SQL, хранилище NoSQL или только в файлах, или индексировать и искать данные на лету, работая со Sphinx практически так же, как с сервером базы данных.

У меня есть только хорошие впечатления от его использования в Linux и Windows.