Problema: preciso executar minhas próprias pesquisas programaticamente com a API de Pesquisa. Todos os resultados do google encontrados são voltados para o ensino de não desenvolvedores como usar o módulo com Views, sem resultados ao fazê-lo como eu quero.
Em formação:
- Usando o serviço de banco de dados local em vez do Solr ou qualquer outro.
- Tenha os dados não armazenados no banco de dados que aparecerão ao lado de outros resultados.
- O conteúdo será agrupado em guias "tipo".
- Não uso do Views por vários motivos.
- A API do Facets está ativada, mas também não sabemos como usá-la.
Motivo: porque eu quero que a página de pesquisa esteja em / site-search e sem / node / keyword após o argumento da página. Também será solicitado que você personalize isso além do escopo de outros módulos que possam fornecer o mesmo tipo de funcionalidade. E quero aprender como fazer isso, mas não encontrei nenhum tutorial ou outro insight sobre como fazer isso.
O resto: criei minha página de pesquisa e nela estou executando a pesquisa com:
$term = $_SESSION['my-search']['term'];
$server = search_api_server_load('database');
$index = search_api_index_load('default_node_index');
$query = new SearchApiQuery($index);
$query->keys($term);
$query->fields(array('title','body:value'));
$srv= new SearchApiDbService($server);
$result = $srv->search($query);
A variável de sessão é definida quando um formulário de pesquisa é enviado e, em seguida, redireciona o usuário para / site-search para executar a pesquisa e mostrar os resultados.
Se eu gerar $ result, vejo que é uma matriz com informações diferentes, incluindo um conjunto de resultados que é uma matriz de IDs de nó e suas pontuações.
Eu poderia percorrê-las, agarrando o nó e exibindo os resultados pessoalmente, mas acho que deve haver outro método para renderizar os resultados da pesquisa. Eu não o encontrei e esse é o problema.
Eu estive pesquisando as diferentes classes na API de pesquisa e na API de facetas e não consigo encontrar nada nelas que pareça que elas gerariam resultados.
Qualquer ajuda com isso será apreciada.
Exemplo de resultados:
Array
(
[result count] => 11
[results] => Array
(
[37] => Array
(
[id] => 37
[score] => 15.7503318786621
)
[39] => Array
(
[id] => 39
[score] => 7
)
[40] => Array
(
[id] => 40
[score] => 5
)
[31] => Array
(
[id] => 31
[score] => 4
)
[33] => Array
(
[id] => 33
[score] => 1
)
[36] => Array
(
[id] => 36
[score] => 1
)
[1] => Array
(
[id] => 1
[score] => 1
)
[15] => Array
(
[id] => 15
[score] => 1
)
[16] => Array
(
[id] => 16
[score] => 1
)
[27] => Array
(
[id] => 27
[score] => 1
)
[35] => Array
(
[id] => 35
[score] => 0.980873763561249
)
)
[warnings] => Array
(
)
[ignored] => Array
(
)
[performance] => Array
(
[complete] => 0.0033111572265625
[preprocessing] => 0.00053095817565918
[execution] => 0.0027379989624023
[postprocessing] => 4.2200088500977E-5
)
)
Respostas:
Você já viu o módulo de páginas da API de pesquisa . Ele usa o módulo Search API e cria uma página de pesquisa personalizada. Você provavelmente poderia procurar nesse módulo pistas sobre como implementar o que está tentando fazer. O próprio módulo pode até fornecer muitas das funcionalidades que você está procurando.
fonte
Aqui está a minha solução em cerca de 100 linhas - um pouco mais simples que as páginas ...
fonte