Поиск с использованием Xapian
Contents
Использование библиотеки Xapian позволяет значительно увеличить скорость работы поиска и даёт ряд дополнительных функциональных преимуществ, недоступных при использовании встроенного механизма поиска.
Зависимости
Для работы поиска необходимо иметь установленными в системе собственно библиотеку Xapian и биндинги для языка Python (пакеты `xapian-core` и `xapian-bindings`), доступные на сайте http://www.xapian.org/, версии не ниже 1.0.6. Кроме того, пользователям Windows также придётся установить pywin32, доступный на сайте http://sourceforge.net/projects/pywin32/.
Для обработки прикреплённых файлов МойнМойн использует дополнения-фильтры (filter plugins). Ниже представлен список включённых в дистрибутив МойнМойн фильтров:
Тип файла |
Зависимость |
Примечания |
Текстовые файлы (.txt) |
— |
Фильтр пытается использовать кодировки UTF-8 и ISO-8859-1 (или ASCII в случае, если предыдущие попытки оказались неудачны) |
Изображение JPEG (.jpg) |
— |
Извлекаются данные EXIF |
Файлы OpenOffice.org 1.x (.sx?) |
— |
Формат файлов, использовавшийся в старых версиях `OpenOffice.org/StarOffice` |
Файлы в формате Open Document Format (.odt, .ods, .odp, ...) |
— |
Формат файлов, использующийся в новых версиях `OpenOffice.org/StarOffice` |
Бинарные файлы |
— |
При обработке используется алгоритм, аналогичный реализованному в утилите `strings` и чёрный список для сущностей, которые нет желания искать. |
Файлы MS Word (.doc) |
`antiword` |
Фильтр вызывает `antiword` |
Файлы MS Excel (.xls) |
`catdoc` |
Фильтр вызывает `xls2csv` |
Файлы MS Powerpoint (.ppt) |
`catdoc` |
Фильтр вызывает `catppt` |
Файлы PDF (.pdf) |
`xpdf-utils` или `poppler-utils` |
Фильтр вызывает `pdftotext` |
После установки дополнительных фильтров (или зависимостей) необходимо (повторно) создать индекс. Xapian будет использовать новые фильтры или вспомогательные библиотеки автоматически. При очередном поисковом запросе поисковая выдача может содержать результаты, ссылающиеся напрямую на прикреплённые файлы.
Конфигурация
В конфигурации вики имеется ряд параметров, отвечающих за конфигурацию Xapian (в комментариях доступен перевод данной таблицы):
Параметр |
Значение по умолчанию |
Описание |
`xapian_search` |
`False` — отключено |
При установке значения данного параметра в `True` («включено») поиск с использованием Xapian будет разрешен на вики. |
`xapian_index_history` |
`False` — отключено |
Если данная значение данного параметра равно `True` («включено»), индексируются все ревизии всех страниц (за исключением системных, коих доступная только одна версия). Это позволяет пользователям при необходимости искать по старым версиям страниц (если соответствующая опция в FindPage была включена). |
`xapian_index_dir` |
`None` — отсутствует |
Данный параметр позволяет указать нестандартную директорию для сохранения индекса. По умолчанию индекс хранится в каталоге `data_dir``/cache/xapian`. |
`xapian_stemming` |
`False` — отключено |
При установке значения данного параметра в `True` («включено») будет производиться морфологический поиск: слова будут индексироваться в исходном и нормализованном виде и слова запроса будут нормализованы при поиске. Это означает, что при поиске слова «тесты» также будут найдены вхождения слов «тестовый», «тестом», «тестер» и т. д. |
(Повторная) генерация индекса
Для начальной, повторной и инкрементальной генерации индекса можно использовать поставляемую в дистрибутиве утилиту командной строки `moin`.
Для (повторной) генерации индекса достаточно выполнить
moin --config-dir=/путь/к/каталогу/конфигурации/вики --wiki-url=url-вики/ index build --mode=rebuild
Подробнее о команде moin index см. на странице ПомощьПоКомандамМойн.
При наличии большого сайта невозможность использования поиска во время перестроения индекса может оказаться существенной. В этом случае можно сначала построить новый индекс путём использования команды moin index build --mode=buildnewindex. Данная операция занимает много времени, но позволяет не нарушать работоспособность поиска на вики. После чего достаточно остановить вики, запустить moin index build --mode=usenewindex для переключения на новый индекс и запустить её снова.
Перестройка индекса обязательна в случае изменения значения хотя бы одного из параметров `xapian_index_history`, `xapian_index_dir` или `xapian_stemming` конфигурации.
Тестирование
Проверить возможность использования Xapian и доступность индекса можно на странице SystemInfo. Для проверки, выполняется ли поиск с использованием Xapian, достаточно включить параметр `show_timings` («показывать время выполнения») в конфигурации вики, выполнить поисковой запрос и проверить наличие записи `_xapianSearch` в нижней части страницы.
Использование
Поиск с использованием Xapian аналогичен использованию других поисковых серверов. В связи с наличием развитых поисковых возможностей у Xapian, добавлен ряд новых элементов синтаксиса поисковых запросов, на данный момент не поддерживаемых встроенным поисковым движком (обычно называемым «moin search» — поиском Мойн). Для дополнительной информации см. КакИскать и/или новый расширенный диалог поиска, доступный на странице FindPage, чтобы узреть, что стало доступно и возможно.