РасширяемостьАнализ текста
Класс
Методы
Таким образом, вы можете устанавливать собственный анализатор текста
или выбирать его из ряда предопределенных анализаторов:
Переключение между анализаторами:
Метод Ниже приведен пример пользовательского анализатора, котрорый принимает слова с цифрами как элементы: 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) {
...
}
}
?>
|
|