indextool — полезная утилита, которая извлекает различную информацию о физической таблице, исключая template или distributed таблицы. Вот общий синтаксис использования indextool:
indextool <command> [options]
Эти опции применимы ко всем командам:
--config <file>(-c <file>для краткости) позволяет переопределить имена файлов конфигурации по умолчанию.--quiet(-qдля краткости) подавляет вывод баннеров и подобного отindextool.--help(-hдля краткости) отображает все параметры, доступные в вашей конкретной сборкеindextool.-vотображает информацию о версии вашей конкретной сборкиindextool.
Доступные команды:
--checkconfigзагружает и проверяет файл конфигурации, проверяя его валидность и наличие синтаксических ошибок.--buildidf DICTFILE1 [DICTFILE2 ...] --out IDFILEстроит IDF файл из одного или нескольких дампов словарей (см.--dumpdict). Дополнительный параметр--skip-uniqпропустит уникальные слова (df=1).--build-infixes TABLENAMEгенерирует инфиксы для уже существующей таблицы dict=keywords (обновляет .sph, .spi на месте). Используйте эту опцию для устаревших файлов таблиц, которые уже используют dict=keywords, но теперь требуют поддержки инфиксного поиска; обновление файлов таблиц с помощью indextool может быть проще или быстрее, чем их пересоздание с нуля с помощью indexer.--dumpheader FILENAME.sphбыстро выводит указанный файл заголовка таблицы без изменения других файлов таблицы или даже файла конфигурации. Отчет предоставляет подробный обзор всех настроек таблицы, особенно полный список атрибутов и полей.--dumpconfig FILENAME.sphизвлекает определение таблицы из указанного файла заголовка таблицы в формате, (почти) совместимом с файлом manticore.conf.--dumpheader TABLENAMEвыводит заголовок таблицы по имени таблицы, при этом путь к заголовку ищется в файле конфигурации.--dumpdict TABLENAMEвыводит словарь. Дополнительный переключатель-statsдобавит общее количество документов к дампу словаря. Это необходимо для файлов словаря, используемых при создании IDF файла.--dumpdocids TABLENAMEвыводит идентификаторы документов по имени таблицы.--dumphitlist TABLENAME KEYWORDвыводит все вхождения указанного ключевого слова в заданной таблице, при этом ключевое слово задано как текст.--dumphitlist TABLENAME --wordid IDвыводит все вхождения конкретного ключевого слова в заданной таблице, при этом ключевое слово представлено внутренним числовым ID.--dumpkilllist TABLENAMEвыводит содержимое kill-листа указанной таблицы, включая цели и флаги. Также может использоваться как--dumpkilllist FILENAME.spk.--docextract TBL DOCIDвыполняет стандартную проверку таблицы всей словарной базы/документов/вхождений и собирает все слова и вхождения, связанные с запрошенным документом. Затем все слова упорядочиваются по полям и позициям, и результат выводится, сгруппированный по полям.--fold TABLENAME OPTFILEЭта опция помогает понять, как токенизатор обрабатывает ввод. Вы можете передать indextool текст из файла, если он указан, или из stdin в противном случае. Вывод заменит разделители пробелами (на основе настроекcharset_table) и преобразует буквы в словах в нижний регистр.--htmlstrip TABLENAMEприменяет настройки HTML-стриппера для указанной таблицы для фильтрации stdin и отправляет результаты фильтрации в stdout. Учтите, что настройки будут взяты из manticore.conf, а не из заголовка таблицы.--mergeidf NODE1.idf [NODE2.idf ...] --out GLOBAL.idfобъединяет несколько .idf файлов в один. Дополнительный параметр--skip-uniqпропустит уникальные слова (df=1).--morph TABLENAMEприменяет морфологию к входным данным из stdin и направляет результат в stdout.--check TABLENAMEпроверяет файлы данных таблицы на ошибки согласованности, которые могут быть вызваны ошибками вindexerили аппаратными сбоями.--checkтакже работает с RT таблицами, RAM и дисковыми чанками. Дополнительные опции:--check-id-dupsпроверяет дубликаты идентификаторов документов в простой таблице и во всех дисковых чанках RT таблицы--check-disk-chunk CHUNK_NAMEпроверяет только конкретный дисковый чанк RT таблицы. Аргумент — числовое расширение дискового чанка RT таблицы для проверки.
--strip-pathудаляет пути из всех имен файлов, на которые ссылается таблица (стоп-слова, словоформы, исключения и т.д.). Это полезно при проверке таблиц, собранных на другой машине с возможно отличающейся структурой путей.--rotateсовместимо только с--checkи определяет, проверять ли таблицу, ожидающую ротации, т.е. с расширением .new. Это полезно, если вы хотите проверить таблицу перед её фактическим использованием.--apply-killlistsзагружает и применяет kill-листы для всех таблиц, перечисленных в файле конфигурации. Изменения сохраняются в .SPM файлах. Файлы kill-листов (.SPK) удаляются. Это удобно, если вы хотите перенести применение таблиц с запуска сервера на этап индексирования.
indextool не может полностью проверить RT таблицу, которая в данный момент обслуживается демоном. При попытке проверить активную RT таблицу вы можете столкнуться с следующим предупреждением:
WARNING: failed to load RAM chunks, checking only N disk chunks
Чтобы избежать этих предупреждений и обеспечить корректную проверку RT таблицы, рассмотрите следующие подходы:
- остановите демон перед запуском
indextool --check. - убедитесь, что RT таблица не обслуживается демоном.
- проверьте отдельную копию RT таблицы вместо живой.
Если остановка демона невозможна, вы можете предотвратить нежелательные изменения RT таблицы, выполнив следующий MySQL-запрос перед запуском indextool --check:
SET GLOBAL AUTO_OPTIMIZE=0;
Эта команда предотвращает автоматическую оптимизацию демоном, гарантируя, что файлы RT таблицы останутся неизменными. После выполнения этого запроса дождитесь полного завершения потока оптимизации перед продолжением с indextool --check. Это гарантирует, что во время проверки не будут случайно изменены или удалены дисковые чанки.
Если автооптимизация была включена ранее, вам следует вручную включить её снова после завершения проверки, выполнив:
SET GLOBAL AUTO_OPTIMIZE=1;
Команда spelldump предназначена для извлечения содержимого из файла словаря, использующего формат ispell или MySpell. Это может быть полезно, когда нужно составить списки слов для форм слов, так как она генерирует все возможные формы за вас.
Общий синтаксис выглядит так:
spelldump [options] <dictionary> <affix> [result] [locale-name]
Основными параметрами являются основной файл и файл аффиксов словаря. Обычно они называются [language-prefix].dict и [language-prefix].aff соответственно. Эти файлы можно найти в большинстве стандартных дистрибутивов Linux или в многочисленных онлайн-источниках.
Параметр [result] — это место, куда будет сохранён извлечённый словарь, а [locale-name] — параметр для указания нужных локалей.
Также есть необязательный параметр -c [file]. Эта опция позволяет указать файл с деталями преобразования регистра.
Вот несколько примеров использования:
spelldump en.dict en.aff
spelldump ru.dict ru.aff ru.txt ru_RU.CP1251
spelldump ru.dict ru.aff ru.txt .1251
В результате получится файл, в котором будут перечислены все слова из словаря, расположенные в алфавитном порядке и отформатированные как файл форм слов. Вы можете затем изменить этот файл в соответствии с вашими конкретными требованиями. Вот пример того, как может выглядеть выходной файл:
zone > zone
zoned > zoned
zoning > zoning
Инструмент wordbreaker предназначен для разбиения составных слов, часто встречающихся в URL, на отдельные компоненты. Например, он может разделить "lordoftherings" на четыре отдельных слова или разбить http://manofsteel.warnerbros.com на "man of steel warner bros". Эта возможность улучшает функциональность поиска, устраняя необходимость в префиксах или инфиксах. Например, поиск по слову "sphinx" не выдаст "sphinxsearch" в результатах. Однако, если применить wordbreaker для разбиения составного слова и индексировать отдельные элементы, поиск будет успешным без увеличения размера файла, связанного с использованием префиксов или инфиксов в полнотекстовом индексировании.
Вот несколько примеров использования wordbreaker:
echo manofsteel | bin/wordbreaker -dict dict.txt split
man of steel
Файл словаря -dict используется для разделения входного потока на отдельные слова. Если файл словаря не указан, Wordbreaker будет искать файл с именем wordbreaker-dict.txt в текущей рабочей директории. (Убедитесь, что файл словаря соответствует языку составного слова, с которым вы работаете.) Команда split разбивает слова из стандартного ввода и отправляет результаты в стандартный вывод. Команды test и bench также доступны для оценки качества разбиения и измерения производительности функции разбиения соответственно.
Wordbreaker использует словарь для определения отдельных подстрок в заданной строке. Чтобы различать несколько возможных вариантов разбиения, он учитывает относительную частоту каждого слова в словаре. Более высокая частота указывает на большую вероятность разбиения на это слово. Для создания такого файла можно использовать инструмент indexer:
indexer --buildstops dict.txt 100000 --buildfreqs myindex -c /path/to/manticore.conf
который создаст текстовый файл с именем dict.txt, содержащий 100 000 наиболее часто встречающихся слов из myindex вместе с их соответствующими количествами. Поскольку этот выходной файл является простым текстовым документом, у вас есть возможность вручную редактировать его в любое время. Не стесняйтесь добавлять или удалять слова по мере необходимости.