Este é um artigo de acompanhamento para o anterior. Abordaremos como refinar a consulta, formular critérios de pesquisa mais complexos com diferentes parâmetros e entender os diferentes formulários da web da página de consulta Apache Solr. Além disso, discutiremos como pós-processo o resultado da pesquisa usando diferentes formatos de saída, como XML, CSV e JSON.
Consultando o Apache Solr
O Apache Solr foi projetado como um aplicativo e serviço da Web que é executado em segundo plano. O resultado é que qualquer aplicativo cliente pode se comunicar com o Solr enviando consultas a ele (o foco deste artigo), manipulando o núcleo do documento adicionando, atualizando e excluindo dados indexados e otimizando os dados principais. Existem duas opções - via interface do painel/web ou usando uma API enviando uma solicitação correspondente.
É comum usar o primeira opção Para fins de teste e não para acesso regular. A figura abaixo mostra o painel da interface do usuário da Apache Solr Administration com os diferentes formulários de consulta no navegador da web Firefox.
Primeiro, no menu no campo de seleção do núcleo, escolha a entrada do menu “Query”. Em seguida, o painel exibirá vários campos de entrada da seguinte forma:
Clicar no botão de consulta Execute executa a solicitação desejada. Para exemplos práticos, dê uma olhada abaixo.
Enquanto o segunda opçao, Você pode enviar uma solicitação usando uma API. Esta é uma solicitação HTTP que pode ser enviada ao Apache Solr por qualquer aplicativo. Solr processa a solicitação e retorna uma resposta. Um caso especial disso está se conectando ao Apache Solr via API Java. Isso foi terceirizado para um projeto separado chamado Solrj [7] - uma API Java sem exigir uma conexão HTTP.
Sintaxe de consulta
A sintaxe de consulta é melhor descrita em [3] e [5]. Os diferentes nomes de parâmetros correspondem diretamente aos nomes dos campos de entrada nos formulários explicados acima. A tabela abaixo os lista, além de exemplos práticos.
Índice de parâmetros de consulta
Parâmetro | Descrição | Exemplo |
---|---|---|
q | O parâmetro principal de consulta do Apache Solr - os nomes e valores de campo. Suas pontuações de similaridade documentam em termos neste parâmetro. | ID: 5 Carros:*Adilla* *: X5 |
fq | Restrinja o conjunto de resultados aos documentos do Superset que correspondem ao filtro, por exemplo, definido por meio de reaiser de consulta de faixa de funções | modelo id, modelo |
começar | Compensações para resultados de página (começam). O valor padrão deste parâmetro é 0. | 5 |
linhas | Compensações para resultados de página (final). O valor deste parâmetro é 10 por padrão | 15 |
organizar | Ele especifica a lista de campos separados por vírgulas, com base nos quais os resultados da consulta devem ser classificados | Modelo ASC |
fl | Ele especifica a lista dos campos para retornar para todos os documentos no conjunto de resultados | modelo id, modelo |
wt | Este parâmetro representa o tipo de escritor de resposta que queríamos ver o resultado. O valor disso é JSON por padrão. | JSON xml |
As pesquisas são feitas via http get request com a sequência de consulta no parâmetro Q. Os exemplos abaixo esclarecerão como isso funciona. Em uso, é um cacho para enviar a consulta para o Solr instalado localmente.
Curl http: // localhost: 8983/solr/cars/Query?Q =*:*
Curl http: // localhost: 8983/solr/cars/Query?Q = ID: 5
Curl http: // localhost: 8983/solr/cars/Query?q = id:*\ & fl = modelo
Opção 2 (consulta em ticks únicos):
Curl 'http: // localhost: 8983/solr/cars/Query?Q = id:*& fl = Model '
Curl http: // localhost: 8983/solr/cars/Query -d '
Q =*:*&
classificação = preço desc &
fl = make, modelo, preço '
Curl http: // localhost: 8983/solr/cars/Query -d '
Q =*:*&
linhas = 5 &
classificação = preço desc &
fl = make, modelo, preço '
Curl http: // localhost: 8983/solr/cars/Query -d '
Q =*:*&
linhas = 5 &
classificação = preço desc &
fl = make, modelo, preço, pontuação '
Curl http: // localhost: 8983/solr/cars/Query -d '
Q =*:*&
fl =*, pontuação '
Além disso, você pode definir seu próprio manipulador de solicitação para enviar os parâmetros de solicitação opcional para o analisador de consulta para controlar quais informações são retornadas.
Reunadores de consulta
O Apache Solr usa o chamado analisador de consulta - um componente que traduz sua sequência de pesquisa em instruções específicas para o mecanismo de pesquisa. Um analisador de consulta está entre você e o documento que você está procurando.
Solr vem com uma variedade de tipos de analisador que diferem na maneira como uma consulta enviada é tratada. O analisador de consulta padrão funciona bem para consultas estruturadas, mas é menos tolerante com erros de sintaxe. Ao mesmo tempo, tanto o analisador de consulta DOMAX quanto DOMAX são otimizados para consultas semelhantes a idiomas naturais. Eles foram projetados para processar frases simples inseridas pelos usuários e procurar termos individuais em vários campos usando pesos diferentes.
Além disso, o Solr também oferece as chamadas consultas de função que permitem que uma função seja combinada com uma consulta para gerar uma pontuação de relevância específica. Esses analisadores são nomeados analisadores de consulta de função e analisador de consulta de faixa de funções. O exemplo abaixo mostra o último para escolher todos os conjuntos de dados para "BMW" (armazenados no campo de dados) com os modelos de 318 a 323:
Curl http: // localhost: 8983/solr/cars/Query -d '
Q = make: BMW &
FQ = Modelo: [318 a 323] '
Pós-processamento de resultados
Enviar consultas para Apache Solr é uma parte, mas após o processamento do resultado da pesquisa do outro. Primeiro, você pode escolher entre diferentes formatos de resposta - de JSON a XML, CSV e um formato de rubi simplificado. Basta especificar o parâmetro WT correspondente em uma consulta. O exemplo de código abaixo demonstra isso para recuperar o conjunto de dados no formato CSV para todos os itens usando o CRO com escape &:
Curl http: // localhost: 8983/solr/cars/Query?Q = ID: 5 \ & WT = CSV
A saída é uma lista separada por vírgula da seguinte forma:
Para receber o resultado como dados XML, mas os dois campos de saída são fabricados e modelos, apenas execute a seguinte consulta:
Curl http: // localhost: 8983/solr/cars/Query?q =*:*\ & fl = make, modelo \ & wt = xml
A saída é diferente e contém o cabeçalho da resposta e a resposta real:
WGet simplesmente imprime os dados recebidos no stdout. Isso permite que você após o processo da resposta usando ferramentas de linha de comando padrão. Para listar alguns, isso contém JQ [9] para JSON, XSLTPROC, XIDEL, XMLSTARLET [10] para XML e CSVKit [11] para formato CSV.
Conclusão
Este artigo mostra diferentes maneiras de enviar consultas ao Apache Solr e explica como processar o resultado da pesquisa. Na próxima parte, você aprenderá a usar o Apache Solr para pesquisar no PostgreSQL, um sistema de gerenciamento de banco de dados relacional.
Sobre os autores
Jacqui Kabeta é um ambientalista, pesquisador ávido, treinador e mentor. Em vários países africanos, ela trabalhou nos ambientes de TI e ONGs.
Frank Hofmann é desenvolvedor, treinador e autor de TI e prefere trabalhar em Berlim, Genebra e Cidade do Cabo. Co-autor do livro de gerenciamento de pacotes Debian disponível no DPMB.org
Links e referências