РасширяемостьАнализ текста
Класс
Методы
Таким образом, вы можете устанавливать собственный анализатор текста
или выбирать его из ряда предопределенных анализаторов:
Переключение между анализаторами:
Метод Ниже приведен пример пользовательского анализатора, котрорый принимает слова с цифрами как элементы: Example #1 Собственный анализатор текста
Фильтрация лексем
Анализатор
Класс
Пользовательские фильтры должны реализовать метод
В предоставляемом анализаторе уже определены три фильтра:
Фильтр
Конструктор
Файл должен быть текстовым с одним словом в каждой строке. Символом '#' помечаются строки с комментариями.
Конструктор
Алгоритмы ранжированияРанг q документа d определяется следующим образом:
tf(t in d) -
idf(t) - getBoost(t.field in d) - коэффициент усиления для поля элемента. lengthNorm($term) - значение нормализации для поля, получаемое из общего количества элементов, содержащихся в поле. Это значение хранится внутри индекса. Эти значения вместе с коэффициентом усиления поля хранятся в индексе, результатом их умножения является ранг для каждого поля. Совпадения в длинных полях менее точны, поэтому реализации этого метода обычно возвращают тем меньшие значения, чем больше число лексем, и тем большие значения, чем меньше число лексем.
сoord(q,d) - Присутствие большого количества элементов запроса означает лучшее соответствие запросу, поэтому реализации этого метода обычно возвращают бОльшие значения, когда соотношение между этими параметрами большое и меньшие значения, когда соотношение между ними небольшое. queryNorm(q) - значение нормализации для запроса, получаемое из суммы возведенных в квадрат весов каждого из элементов запроса. Это значение затем умножается в вес каждого элемента запроса. Это не влияет на ранжирование, цель нормализации состоит в том, чтобы сделать соизмеримыми ранги, полученные при различных запросах.
Алгоритм ранжирования может быть изменен через определение своего
собственного класса. Для этого надо создать потомка класса
Zend_Search_Lucene_Search_Similarity, как показано ниже, затем
использовать метод
Контейнеры хранения
Абстрактный класс
Конструктор
Если для конструктора
Вы можете определить собственную реализацию директории,
создав потомка класса
Методы <?php abstract class Zend_Search_Lucene_Storage_Directory { /** * Закрывает средство хранения. * * @return void */ abstract function close(); /** * Создает новый пустой файл с данным именем в директории. * * @param string $name * @return void */ abstract function createFile($filename); /** * Удаляет существующий файл в директории. * * @param string $filename * @return void */ abstract function deleteFile($filename); /** * Возвращает true, если файл с данным именем существует. * * @param string $filename * @return boolean */ abstract function fileExists($filename); /** * Возвращает длину файла в директории. * * @param string $filename * @return integer */ abstract function fileLength($filename); /** * Возвращает время последнего изменения файла в формате UNIX. * * @param string $filename * @return integer */ abstract function fileModified($filename); /** * Переименовывает существующий файл в директории. * * @param string $from * @param string $to * @return void */ abstract function renameFile($from, $to); /** * Устанавливает время изменения файла в текущее. * * @param string $filename * @return void */ abstract function touchFile($filename); /** * Возвращает объект Zend_Search_Lucene_Storage_File для данного файла в директории. * * @param string $filename * @return Zend_Search_Lucene_Storage_File */ abstract function getFileObject($filename); } ?>
Метод
Абстрактный класс
Вы должны создать класс, наследующий от
Только два метода класса <?php class MyFile extends Zend_Search_Lucene_Storage_File { /** * Устанавливает индикатор позиции и перемещает указатель файла. * Новая позиция, измеряемая в байтах от начала файла, * получается добавлением смещения к позиции, определяемой аргументом $whence, * который может принимать следующие значения: * SEEK_SET - Устанавливает позицию равной смещению в байтах. * SEEK_CUR - Устанавливает позицию равной текущей позиции плюс смещение. * SEEK_END - Устанавливает позицию равной концу файла плюс смещение. * (Для перемещения позиции относительно конца файла вы должны передать отрицательное значение смещения) * В случае успеха возвращает 0; иначе -1 * * @param integer $offset * @param integer $whence * @return integer */ public function seek($offset, $whence=SEEK_SET) { ... } /** * Считывает $length байт из файла и перемещает указатель файла. * * @param integer $length * @return string */ protected function _fread($length=1) { ... } } ?>
|
|