Componentes e visão geral do Lucene
Note
Esse recurso está disponível em NCache Empreendimento e Aprovação edições.
O Lucene, como sabemos, é um motor de busca poderoso e eficiente que oferece uma vasta gama de técnicas de busca de texto de acordo com as necessidades do usuário. O Lucene é muito mais do que qualquer outro mecanismo de busca de texto, pois as escolhas dadas ao usuário não são discriminadas em nenhuma base. Possui algoritmos de pesquisa poderosos e fortes e suporta uma ampla gama de consultas para pesquisa.
Os aplicativos Lucene têm um ciclo básico que compreende principalmente os primeiros dados de indexação nos quais a pesquisa é realizada, em um caminho específico. Os dados adicionados podem estar em qualquer formato textual conforme as necessidades do usuário. Os dados são indexados e tokenizados e, em seguida, a pesquisa é realizada nesses tokens usando consultas. Este é um processo de duas vias, pois inclui primeiro o processamento de dados e depois a pesquisa neles.
O diagrama a seguir descreve o fluxo de trabalho básico do modelo Lucene.
Componentes do Lucene
Para usar o Lucene para pesquisa de texto, vamos dar uma olhada na API principal usada pelo Lucene. Observe que não é um guia completo para o Lucene. No entanto, ajudará você a entender a API básica e radical do Lucene.
A seguir está a API básica usada para construir uma solução baseada em Lucene.
Diretório: É a classe base que define onde os índices são formados.
Documento: Ele contém os dados que devem ser indexados.
Analisador: Enquanto os dados estão sendo indexados, o analisador decide os critérios com base nos quais a tokenização e a pesquisa são feitas nos dados. Da mesma forma, é usado ao consultar dados que também envolvem tokenização.
Escritor de índice: Documentos que são criados previamente são passados para o diretório usando esta classe. Um indexWriter pode ser aberto por vez.
Leitor de Índice: Cada diretório onde o índice é criado pode ter leitor(es) aberto(s) nele que é responsável por ler os dados dos índices.
Pesquisador de índice: O pesquisador é responsável por consultar os dados através do(s) leitor(es).
Dada a seguir é a descrição detalhada dessas classes:
Diretório
Essa classe é uma representação do local onde os índices do Lucene são armazenados. Um diretório precisa ser aberto para manter os índices para que outras operações possam ser executadas neles.
ISO
Um documento é uma coleção de Campos. Esses campos contêm dados textuais como valor em relação a um nome de campo. O valor são os dados que você deseja indexar e, em seguida, torná-los pesquisáveis para o futuro. Com cada campo, o usuário pode especificar se deseja analisar esse valor de campo ou não. Documento é basicamente a unidade de pesquisa que será retornada quando um campo for pesquisado em um searchterm
.
Analista
Analyzer
como discutido anteriormente, tem a responsabilidade principal de tokenizar os dados em pedaços menores de acordo com o tipo fornecido. Ele basicamente analisa os campos dos documentos em tokens indexáveis. A forma como os dados são analisados pelo analisador influencia a capacidade do usuário de pesquisar os dados. Abaixo estão listados os quatro analisadores Lucene básicos e mais usados.
Analisador de espaço em branco
Este analisador analisa os dados de acordo com os espaços em branco como o nome mostra. Além disso, este analisador mantém o caso das palavras. Ele executa a tokenização de dados de acordo com o caso que ele contém principalmente.
Analisador padrão
Ele analisa os dados de acordo com as palavras de parada, bem como executa tokenização nos dados em letras minúsculas, semelhante ao analisador simples. Além disso, reconhece os URLs e endereços de e-mail e gera tokens de acordo. Devido a esta funcionalidade, é mais comumente usado, pois é considerado o analisador mais inteligente.
Analisador simples
Ele indexa os dados em letras minúsculas e os divide com base em não letras. Ele não indexa URLs e caracteres que não sejam letras, como símbolos ou números.
Parar analisador
O analisador de parada gera tokens dos dados de acordo com os caracteres que não são letras, bem como palavras de parada. Palavras de parada são as palavras que devem ser ignoradas durante a indexação, pois os analisadores as consideram irrelevantes para serem examinadas. Além disso, o analisador de parada não indexa URLs e caracteres que não sejam letras, como símbolos ou números.
Considere a frase abaixo:
Este é um tutorial para “DistributedLucene” em alachisoft. Com.
Analisador de espaço em branco | Parar analisador | Analisador simples | Analisador padrão |
---|---|---|---|
Esta is a tutorial para “DistribuídoLucene” at alachisoft. Com. |
tutorial distribuídoluceno alachisoft com |
isto is a tutorial para “luceno distribuído” alachisoft com |
tutorial distribuídoluceno alachisoft.com |
Editor de índice
Para adicionar o documento e indexá-lo, precisamos de um IndexWriter
. O escritor precisa:
Um diretório Lucene válido: onde o documento deve ser indexado
Analisador: para que o redator analise os dados de acordo com ele.
O Writer corresponde ao analisador para os dados indexados e, em seguida, adiciona os resultados ao Diretório para o armazenamento dos dados. Precisamente, o escritor é responsável por todas as operações de escrita a serem executadas corretamente nos dados e, em seguida, armazená-los. Existe um conjunto de operações que podem ser executadas no gravador e o gravador é descartado após todas as operações.
Leitor de índice
A principal funcionalidade do Lucene é pesquisar os dados adicionados anteriormente. Para isso temos IndexReader
que lê os dados do diretório. Em cada atualização nos documentos, o IndexReader
precisa ser reinicializado. Você pode tanto criar um IndexReader
ou obter uma instância de IndexReader
do IndexWriter
. Você passa a instância do diretório para o leitor que tem todos os documentos indexados.
Pesquisador de índice
IndexSearcher
é inicializado com a instância de
IndexReader
que recebe a consulta do usuário e pesquisa os dados de acordo. Uma consulta é uma classe abstrata fornecida pelo Lucene e é usada para definir o escopo e o tipo de pesquisa a ser realizada. Ao pesquisar somos devolvidos com TopDocs
que é o resultado da pesquisa com a consulta.
Agora que a consulta foi criada, você analisa a consulta usando o QueryParser
. O Analyzer é passado para o queryParser que analisa a consulta de acordo com esse analisador. Além disso, o nome do campo adicionado no documento é passado para o pesquisador de consulta para que ele pesquise os dados de acordo.
Uma matriz é mantida em topDocs
que é conhecido como scoreDocs
. ScoreDocs
manterá os resultados da pesquisa com base na execução da consulta. Na iteração sobre essa matriz, os dados resultantes podem ser recuperados.
Recomendação: Recomenda-se que o analisador usado para a pesquisa seja o mesmo com o qual os dados foram indexados em primeiro lugar.
Veja também
Lucene com NCache
Configurar índices de consulta do Lucene
Pesquisa SQL no Cache
Pesquisar cache com LINQ