Поисковая система: кодировка текста, языки, локализация

Кодировки текста

По умолчанию определение кодировки текста (кодовой страницы) основано на следующем алгоритме.

Во-первых, если файл имеет тэги для указания кодировки (обязательно для XML, опционально для HTML), то она используется безусловно.

Во-вторых, некоторые текстовые файлы содержат BOM - несколько начальных байтов с предопределенными величинами, позволяющими распознать кодировки utf-8, utf-16 и др. для простых текстовый файлов.

Во-третьих, если файл не содержит служебной информации о кодировке текста, то включается специальный блок - CodePage Guesser, подбирающий наиболее подходящую кодировку. Во избежание неприятных сюрпризов пожалуйста обратите внимание, что автоматическое распознавание кодировки работает не для всех языков - см. возможности текущего релиза.

Управлять вышеописанным алгоритмом можно через интерфейс поисковой системы. В окне построения области поиска есть группа полей, с помощью которых можно управлять чтением символов из текстовых файлов:

 

На этой вкладке есть поля, с помощью которых можно задавать принудительную кодировку для всех файлов:

задание принудительной кодировки символов

Это бывает полезно в тех случаях, когда к примеру в HTML файле кодировка указана неверно (небрежность веб-дизайнеров поразительна), либо если алгоритм автоопределения кодировки ошибается.

Также можно задать кодировку, предпочитаемую в случае отсутствия сведений о кодировке (например, не все HTML файлы сформированы корректно в этом смысле, а ASCII-файлы вообще не имеют указания кодировки):

задание предпочитаемой кодировки символов

Поля выбора кодировки не применяются для файлов, которые содержат текст в Unicode-формате, например - utf-8, utf-16, и др.

Окно выбора кодировки содержит список всех поддерживаемых текущей версией поискового движка кодировок - включая синонимы:

Обратите внимание, что многие кодировки имеют большое количество синонимичных названий, и после выбора название кодировки будет приведено к некоторому базовому имени, например выбранная кодировка iso8859-1 будет заменена на cp28591.

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

Мультиязыковой поиск

Если Вам часто приходится работать с текстами на различных языках, то встроенные в поисковую систему средства для работы с текстами в разных кодировках могут облегчить Вашу работу. Обратите внимание, что язык интерфейса программы (то есть локализация)  никак не связана с возможностью искать информацию на других языках, хотя и может влиять на выбор параметров по умолчанию. См. подробнее о настройке морфологического анализатор поисковой системы.

Продемонстрируем это на таком примере. Есть каталог с некоторым количеством текстов на французском языке. Документы имеют самый разный формат - utf-8 txt, ascii txt в кодировке 8859-1, HTML, RTF, PDF. Кроме всего прочего, документы запакованы (это следствие того, что фактически они скачаны с сайта проекта www.Gutenberg.org). Выполним поиск документов, которые содержат упоминание Александра Дюма-отца (Alexandre Dumas в оригинале).

Форма для задания параметров запроса должна быть такой:

форма задания параметров поиска

Обратите внимание на флаг "убирать диактрические знаки" - он необходим, чтобы поисковый движок правильно сопоставил слова pere в запросе и père в текстах.

В форме определения области поиска необходимо указать папку с документами выставить предпочитаемую кодировку - iso-8859-1 (стандартная для многих европейских языков). В принципе, встроенный в поисковую машину автоопределитель кодовой страницы может подбирать кодировку для французского текста, но проблема состоит в том, что тексты с сайта Gutenberg сопровождаются внушительного размера "предисловиями" с условиями использования, и эти предисловия написаны по-английски. Так как автоопределитель кодовой страницы читает только несколько первых предложений из каждого документа, он будет ошибаться на некоторых ascii-файлах. Итак, выставляем предпочитаемую кодировку:

После этого запускаем поиск и видим в результатах по крайней мере ссылки на роман "Королева Марго" (два тома):

 

Локализация

Локаль, которая влияет на применяемый язык текстовых сообщений, устанавливается принятым в поисковом движке способом - явно через ini файл или автоматически по локали текущего сеанса. В настольной поисковой системе обычно удобнее использовать диалоговое окно конфигурирования:

 

 

Для перевода текстовых строк сообщений и интерфейса на различные языки (сейчас поддерживается только русский и английский, отчасти - французский) используется файл integra.lang в каталоге программы. Это обычный текстовый файл в формате utf-8, который можно править даже в Блокноте. Формат записей примитивен - числовой код сообщения, затем сигнатура локали (двухбуквенное обозначение языка) и текст сообщения до конца строки. Кодировка utf8 позволяет писать сообщения на любом языке, который поддержан стандартом UNICODE. После правки содержимого нужно только перезапустить поисковую систему и новый текст сообщений будет немедленно загружен.

Связь с API поискового движка

Обсуждение некоторых внутренних аспектов работы с кодировками символов и Unicode текстом можно найти на соответствующей странице технического описания и на странице примеров поиска.

Где скачать поисковую систему и SDK

Скачать SDK поисковой системы с примерами и другие компоненты можно здесь поисковая система

  © Mental Computing 2010
изменено 04-Jun-10