Поиск с использованием Xapian

Использование библиотеки 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_search (и использует встроенный поиск) если не может найти рабочий индекс. Проверить, используется ли Xapian, можно на странице SystemInfo («системная информация»)

xapian_index_history

False — отключено

Если данная значение данного параметра равно True («включено»), индексируются все ревизии всех страниц (за исключением системных, коих доступная только одна версия). Это позволяет пользователям при необходимости искать по старым версиям страниц (если соответствующая опция в НайтиСтраницу была включена).
/!\ Перестройка индекса необходима при изменении данного параметра. Кроме того, рекомендуется проверить размер индекса после повторной его генерации, так как включение данной функции может потребовать большое количество дискового пространства для хранения индекса большой вики. Перестройка может занять длительное время в случае индексирования истории версий страниц.

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» — поиском Мойн). Для дополнительной информации см. КакИскать и/или новый расширенный диалог поиска, доступный на странице НайтиСтраницу, чтобы узреть, что стало доступно и возможно.