Programmer's Reference Guide
| API для построения запросовQuery Construction API |
Кодировки
Поддержка UTF-8 и однобайтных наборов символов
Zend_Search_Lucene в своей работе использует кодировку UTF-8. Файлы индекса хранят данные unicode в кодировке Modified UTF-8 от Java. Ядро Zend_Search_Lucene полностью поддерживает его за одним исключением. [1]
Действующая кодировка для входных данных может быть указана через API Zend_Search_Lucene. Данные будут автоматически преобразованы в кодировку UTF-8.
Используемый по умолчанию анализатор текста
Несмотря на это, используемый по умолчанию анализатор текста
(который также применяется в парсере запросов) использует
ctype_alpha() для разбиения текста и поисковых
запросов на лексемы.
ctype_alpha() не является совместимым с UTF-8, поэтому
анализатор конвертирует текст в кодировку 'ASCII//TRANSLIT' до
индексации. То же самое выполняется при парсинге запросов.
[2]
Совместимый с UTF-8 анализатор текста
Zend_Search_Lucene также содержит совместимый с UTF-8 анализатор текста с ограниченным функционалом.
- <?php
- Zend_Search_Lucene_Analysis_Analyzer::setDefault(
- new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());
Он разбивает на лексемы данные для индексации в режиме UTF-8, не испытывая проблем с любыми входящими в UTF-8 символами.
Данный анализатор имеет два ограничения:
-
обрабатывает все не входящие в кодировку ASCII как буквы;
-
является чувствительным к регистру;
Из-за этих ограничений он не используется по умолчанию, но может быть полезен некоторым.
Нечувствительность к регистру может быть сэмулирована с помощью
strtolower().
- <?php
- ...
- Zend_Search_Lucene_Analysis_Analyzer::setDefault(
- new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());
- ...
- $doc = new Zend_Search_Lucene_Document();
- // Поле заголовка для поиска
- // (индексируется, но не сохраняется в индексе)
- // Поле заголовка для возвращения в результатах поиска
- // (не индексируется, но сохраняется)
- $doc->addField(Zend_Search_Lucene_Field::UnIndexed('_title', $title));
То же самое преобразование должно выполняться и для запросов:
- <?php
- ...
- Zend_Search_Lucene_Analysis_Analyzer::setDefault(
- new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());
- ...
| API для построения запросовQuery Construction API |
Select a Version
Languages Available
Components
Search the Manual
Navigation
- Руководство разработчика
- Руководство разработчика
- Zend_Search_Lucene
- Обзор
- ИндексацияBuilding Indexes
- Поиск по индексуSearching an Index
- Язык запросовQuery Language
- API для построения запросовQuery Construction API
- КодировкиCharacter set.
- РасширяемостьExtensibility
- Взаимодействие с Java LuceneInteroperating with Java Lucene
- Advanced
- Best Practices
