|
|
A classe Zend_Search_Lucene_Analysis_Analyzer class é
usada pelo indexador para "tokenizar" campos de documentos de
texto.
Os métodos
Zend_Search_Lucene_Analysis_Analyzer::getDefault() e
Zend_Search_Lucene_Analysis_Analyzer::setDefault() são usados
para obter e setar, respectivamente, o analisador padrão.
Dessa forma você pode estipular o seu próprio analisador de textos
ou selecioná-lo dentre uma lista de analisadores prédefinidos:
Zend_Search_Lucene_Analysis_Analyzer_Common_Text e
Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive
(default). Ambos interpretam um "token" como uma sequencia de letras.
Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive
converte os "tokens" para caixa baixa.
Para selecionar um analisador utilize o código:
addDocument($doc); ?>
Zend_Search_Lucene_Analysis_Analyzer_Common foi
projetado ser o pai de todos os analisadores definidos pelo usuário. O
usuário só precisa definir o método tokenize(), que receberá
os dados de entrada como uma string e retornará um array de
"tokens".
O método tokenize() deve aplicar o método
normalize() a todos os "tokens". Ele permite o uso de filtros
de "token" junto com o seu analisador.
Aqui está um exemplo de um analisador customizado, que aceita tanto palavras contendo digitos tratando-as como um único termo:
Example #1 Analisador de texto customizado.
normalize($token);
}
return $tokenStream;
}
}
Zend_Search_Lucene_Analysis_Analyzer::setDefault(
new My_Analyzer());
?>
A pontuação da consulta q para o documento
d é definida como segue:
score(q,d) = sum( tf(t in d) * idf(t) * getBoost(t.field in d)
* lengthNorm(t.field in d) ) * coord(q,d) * queryNorm(q)
tf(t in d) -
Zend_Search_Lucene_Search_Similarity::tf($freq) - um fator de
pontuação baseado na frequência de um termo ou frase em um
documento.
idf(t) -
Zend_Search_Lucene_Search_SimilaritySimilarity::tf($term,
$reader) - um fator de pontuação para um termo simples para o
índice especificado.
getBoost(t.field in d) - fator de reforço para o campo.
lengthNorm($term) - O valor de normalização para um campo, dado o número total de termos contido nele. Este valor é armazenado junto com o índice. Estes valores, juntamente com os campos de reforço, são armazenados em um índice e multiplicados nas pontuações de acerto em cada campo, pelo código de busca.
Comparações em campos longos são menos precisas, e implementações deste método usualmente retornam valores pequenos quando o número de "tokens" é grande, e valores gradnes quando o número de "tokens" for pequeno.
coord(q,d) -
Zend_Search_Lucene_Search_Similarity::coord($overlap,
$maxOverlap) - um fator de pontuação baseado no quociente de todos
os termos de busca que um documento contém.
The presence of a large portion of the query terms indicates a better match with the query, so implementations of this method usually return larger values when the ratio between these parameters is large and smaller values when the ratio between them is small.
A existência de uma grande quantidade de termos de busca indica um grau maior de comparação. As implementações deste método usualmente retornam valores significativos quando a razão entre estes parâmetros é grande e vice versa.
queryNorm(q) - o valor de normalização para uma consulta dado a soma dos (squared weights) de cada termo da consulta. Este valor é então multiplicado pelo (weight) de cada ítem da consulta.
Isto não afeta a pontuação, mas a quantidade de tentativas para gerar pontuações em comparações entre consultas.
O algoritmo de pontuação pode ser customizado pela implementação da
sua própria classe de similaridade. Para isso crie uma classe descendente
de Zend_Search_Lucene_Search_Similarity como mostrado abaixo, então use o
método
Zend_Search_Lucene_Search_Similarity::setDefault($similarity);
para defini-la como padrão.
A classe abstrata Zend_Search_Lucene_Storage_Directory define a funcionalidade de diretório.
O construtor do Zend_Search_Lucene usa como entrada uma string ou um objeto da classe Zend_Search_Lucene_Storage_Directory.
A classe Zend_Search_Lucene_Storage_Directory_Filesystem implementa a funcionalidade de diretório para o sistema de arquivos.
If string is used as an input for the Zend_Search_Lucene constructor, then the index reader (Zend_Search_Lucene object) treats it as a file system path and instantiates Zend_Search_Lucene_Storage_Directory_Filesystem object by themselves.
Se uma string for usada como entrada para o construtor do Zend_Search_Lucene, então o leitor do índice (um objeto Zend_Search_Lucene) a tratará como um caminho para o sistema de arquivos e instanciará um objeto da classe Zend_Search_Lucene_Storage_Directory_Filesystem.
Voce pode definir a sua própria implementação de diretório extendendo a classe Zend_Search_Lucene_Storage_Directory.
Métodos de Zend_Search_Lucene_Storage_Directory:
O método getFileObject($filename) da classe
Zend_Search_Lucene_Storage_Directory retorna um objeto
Zend_Search_Lucene_Storage_File.
A classe abstrata Zend_Search_Lucene_Storage_File implementa a abstração de arquivo e as primitivas de leitura de arquivos de índice.
Se fizer isso, você também terá que extender a classe Zend_Search_Lucene_Storage_File para a sua implementação de diretório.
Somente dois métodos da classe Zend_Search_Lucene_Storage_File devem ser sobrecarregados em sua implementação:
|
|
Copyright © 2005-2011 Zend Technologies Inc (compiled by mikaelkael with ZFDocumentor - SVN 20188).

