Introdução ao mecanismo de pesquisa Sphinx

Introdução ao mecanismo de pesquisa Sphinx

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Neste artigo, falaremos sobre o mecanismo de pesquisa Sphinx e como usá-lo para instalá-lo no sistema operacional Windows.

Este é o primeiro artigo da série “Sphinx Search Engine”, onde explicaremos como instalar e usar esse mecanismo de pesquisa para criar índices de texto completo em bancos de dados relacionais (SQL Server).

Introdução

Esfinge (SQL Phraça Nodox) é um mecanismo de pesquisa de texto completo independente que fornece funcionalidade de pesquisa eficiente para aplicativos de terceiros, especialmente bancos de dados SQL. Esse mecanismo de pesquisa foi desenvolvido em 2001 por um desenvolvedor russo chamado Andrew Aksyonoff para garantir (1) boa qualidade de pesquisa, (2) realizado em alta velocidade (3) e com baixo consumo de recursos (Disk IO, CPU). Ele pode ser integrado a linguagens de script como Python e Java.

O mecanismo de pesquisa Sphinx possui seus próprios drivers de fonte de dados que são usados ​​para interagir com diferentes sistemas de gerenciamento de banco de dados. Nós devemos especificar o driver que precisamos nos arquivos de configuração.

Em um trabalho de pesquisa publicado em 2017 por um grupo de pesquisadores da Universidade Tecnológica de Moscou, é feita uma rápida comparação entre quatro mecanismos de pesquisa populares (Sphinx, Apache Solr, ElasticSearch e Xapian). O resultado (mostrado na tabela abaixo) mostra que o mecanismo de pesquisa Sphinx possui a velocidade de indexação mais rápida (4,5 Mb / s) e uma velocidade de pesquisa muito rápida (7/75 ms).

Esfinge

Solr

Elasticsearch

Xapian

Velocidade de indexação (Mb / s)

4.5

2,75

3.8

1,36

Velocidade de pesquisa (ms)

7/75

25/212

10/212

14/135

Tamanho do índice (%)

30

20

20

200

Realização

Servidor

Servidor

Biblioteca

Biblioteca

Interface

API, SQL

Serviço de internet

API

API

Operadores de pesquisa

Pesquisa booleana, prefixo, frase exata, palavras próximas, intervalos, ordem das palavras, zonas

Pesquisa booleana, prefixo (+ caracteres curinga), frase exata, palavras próximas, intervalos, pesquisa aproximada

Pesquisa booleana, prefixo (+ caracteres curinga), frase exata, palavras próximas, intervalos, pesquisa aproximada

Pesquisa booleana, prefixo, frase exata, palavras próximas, intervalos, pesquisa aproximada

Tabela 1 – Comparação de mecanismos de pesquisa

Fazendo o download do mecanismo de pesquisa Sphinx

Primeiro de tudo, devemos baixar a versão mais recente (por enquanto, a versão mais recente é 3.2.1) do mecanismo de pesquisa Sphinx no link a seguir.

Link para download do Sphinx

Figura 1 – Link para download do Sphinx

Após o download do pacote de binários, devemos extrair seu conteúdo (conforme mostrado na imagem abaixo, usamos o 7zip como uma ferramenta de extração).

Extraindo pacote baixado

Figura 2 – Extraindo pacote de binários

Configurando o Sphinx

Após extrair o pacote, devemos adicionar uma pasta chamada “data” dentro do diretório extraído para armazenar índices. Em seguida, devemos criar três pastas chamadas “index”, “log” e “binlog” dentro do diretório “data” criado.

O diretório extraído

Figura 3 – Diretório extraído

Adicionando o diretório de dados à pasta de instalação do mecanismo de pesquisa Sphinx

Figura 4 – Adicionando o diretório “data”

Adicionando as pastas binlog, index e log ao diretório de dados

Figura 5 – criando as pastas de índice, log e binlog

É bom saber que o Sphinx possui dois serviços principais:

  1. Indexador: Este serviço é usado para criar índices de texto completo. Por padrão, o Sphinx lê as tabelas de origem no arquivo de configuração localizado em “ etc sphinx.conf ”
  2. Searchd: Este é o daemon usado para pesquisar os índices criados. Requer que um cliente acesse a API Sphinx

Primeiro, devemos criar um serviço do Windows para executar o daemon Searchd. Para fazer isso, podemos usar o seguinte comando no prompt de comando do Windows:

E: Sphinx sphinx-3.2.1 bin searchd –install –config
E: Sphinx sphinx-3.2.1 etc sphinx.conf – nome do serviço SphinxSearch

Criando um serviço do Windows para o mecanismo de pesquisa Sphinx

Figura 6 – Criando serviço do Windows via prompt de comando

Para verificar se o serviço Windows foi criado com sucesso, podemos acessar Serviços e verificar se o SphinxSearch serviço é adicionado.

Serviço do Windows SphinxSearch criado

Figura 7 – Serviço de janelas do SphinxSearch criado

Observe que antes de configurar o arquivo de configuração do Sphinx, este serviço do Windows não pode ser iniciado.

Para configurar o Sphinx, devemos criar o arquivo “Sphinx.conf” dentro do diretório “E: Sphinx sphinx-3.2.1 etc”. Em seguida, devemos primeiro adicionar as seguintes linhas:

pesquisar
{
listen = 9306: mysql41
pid_file = E: /sphinx/sphinx-3.2.1/data/searchd.pid
log = E: /sphinx/sphinx-3.2.1/data/log/log.txt
query_log = E: /sphinx/sphinx-3.2.1/data/log/query_log.txt
binlog_path = E: /sphinx/sphinx-3.2.1/data/binlog/
}

o ouço A opção especifica que o Sphinx usará a porta 9306 e o ​​protocolo MySQL. O uso do protocolo MySQL permite conectar ao Sphinx como um banco de dados MySQL regular. o pid_file A configuração especifica o local do arquivo .pid usado internamente. Configuração registro e query_log indica a localização dos arquivos de log, que registram todos os eventos. o binlog_path A configuração especifica o local dos arquivos que podem ser usados ​​para restaurar dados do índice em tempo real após uma falha.

Para iniciar o Sphinx, precisamos pelo menos criar um índice no arquivo de configuração. Neste artigo, definiremos um índice falso em tempo real adicionando as seguintes linhas:

índice fake_index
{
type = rt
caminho = E: /sphinx/sphinx-3.2.1/data/index/fake_index
rt_field = fake_field
}

Agora, vamos tentar usar o serviço de indexador para criar os índices usando o seguinte comando:

E: Sphinx sphinx-3.2.1 bin indexador –todos –config
E: sphinx sphinx-3.2.1 etc sphinx.conf –rotate –print-queries

Se você estiver usando o Sphinx versão 3.2.1 enquanto executa o comando acima, poderá encontrar o seguinte erro:

“A execução do código não pode continuar porque ssleay32.dll não foi encontrado”

Serviço indexador lançando uma exceção

Figura 8 – Serviço indexador lançando uma exceção

Essa causa do erro é que há três montagens ausentes nesta versão. Para resolver esse problema, você pode baixar uma liberação anterior (3.1.1) e copiar os seguintes assemblies dos diretórios bin:

  • libeay32.dll

  • msvcr120.dll

  • ssleay32.dll

Depois de copiar esses assemblies, se tentarmos executar novamente o comando acima, receberemos a seguinte mensagem (conforme mostrado na imagem abaixo)

“FATAL: nenhum índice encontrado no arquivo de configuração”

O que significa que o indexador foi iniciado com êxito, mas não encontrou um índice real.

Mensagem de Saída do Serviço do Indexador

Figura 9 – Mensagem de saída do serviço do indexador

Agora, se tentarmos iniciar o serviço Windows do SphinxSearch, ele será iniciado com êxito.

Alguns comandos úteis

A tabela a seguir contém alguns comandos importantes:

Comando

Descrição

E: Sphinx sphinx-3.2.1 bin searchd -h

O comando de ajuda da ferramenta Searchd, é usado para ver todas as opções disponíveis

E: Sphinx sphinx-3.2.1 searchd.exe –config E: Sphinx sphinx-3.2.1 etc sphinx.conf

Inicie o daemon Searchd usando o arquivo de configuração especificado

E: Sphinx sphinx-3.2.1 bin searchd.exe –config E: Sphinx sphinx-3.2.1 sphinx.conf –logdebug

Inicie o daemon Searchd usando o arquivo de configuração especificado com o log ativado

E: Sphinx sphinx-3.2.1 bin searchd-nome do serviço SphinxSearch –delete

Excluir o serviço Windows existente do SphinxSearch

Tabela 2 – Comandos importantes do Sphinx

Conectando-se ao Sphinx usando o cliente do console MySQL

Como o Sphinx suporta o protocolo MySQL, podemos usar o cliente do console MySQL para conectar-se ao Sphinx e executar comandos.

Primeiro, precisamos baixar e instalar o mecanismo de banco de dados MySQL na máquina local. Você pode fazer o download do servidor da comunidade MySQL no seguinte link.

Após instalar o MySQL Server, abra a linha de comando do Windows e acesse o diretório de binários do MySQL (neste exemplo, o diretório é “C: Arquivos de Programas MySQL MySQL Server 8.0 bin”) e use o cliente MySQL para conectar-se ao host local porta 9306 (especificada no arquivo de configuração do Sphinx) usando o seguinte comando:

mysql -h 127.0.0.1 -P 9306

Conectando-se ao mecanismo de busca Sphinx usando o cliente MySQL

Figura 10 – Conectando ao Sphinx usando o cliente MySQL

Conforme mostrado na imagem acima, a versão do servidor mencionada na saída do prompt de comando é a versão do mecanismo de pesquisa Sphinx (3.2.1-dev (commit f152e0b8)), o que significa que a conexão foi estabelecida com sucesso.

Agora, vamos tentar executar o comando “show status” para visualizar o status do servidor; o resultado é como mostrado na imagem abaixo:

Executando o comando show status

Figura 11 – Executando o comando show status

Recursos online

A desvantagem da Esfinge é que ela não possui recursos online suficientes. Existem dois recursos principais onde você pode obter informações úteis:

  1. A documentação oficial: onde são explicados todos os recursos e ferramentas do Sphinx
  2. SphinxWiki: Esta página contém muitos tópicos e recursos relacionados ao Sphinx
  3. Introdução à pesquisa com o livro Sphinx: Uma introdução concisa ao Sphinx que mostra como usar essa ferramenta para indexar dados e fornecer resultados rápidos para pesquisas simples e complexas

Conclusão

Neste artigo, falamos sobre o mecanismo de pesquisa Sphinx e por que ele foi desenvolvido. Em seguida, explicamos como baixar e configurar essa ferramenta no Windows. Por fim, ilustramos como usar o console do cliente MySQL para conectar-se ao mecanismo Sphinx.

No próximo artigo desta série, falaremos detalhadamente sobre os arquivos de configuração do Sphinx e explicaremos como usá-lo para criar catálogos de texto completo a partir de bancos de dados do SQL Server.

Hadi Fadlallah
Últimas mensagens de Hadi Fadlallah (ver todos)

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Leia Também  Qual é a sua pergunta de entrevista favorita do SQL Server? Aqui está o meu.