Problema: Necesito ejecutar mis propias búsquedas mediante programación con Search API. Todos los resultados de Google que encuentro están orientados a enseñar a los no desarrolladores cómo usar el módulo con Vistas sin resultados en hacerlo como yo quiero.
Información:
- Usar el servicio de base de datos local en lugar de Solr o cualquier otro.
- Tenga datos no almacenados en la base de datos que aparecerán junto con otros resultados.
- El contenido se agrupará en pestañas de "tipo".
- No usar Vistas por varias razones.
- Habilite la API de Facetas pero tampoco tiene idea de cómo usarla.
Por qué: porque quiero que la página de búsqueda esté en / site-search y sin / node / keyword después del argumento de la página. También se le pedirá que personalice esto más allá del alcance de otros módulos que pueden proporcionar el mismo tipo de funcionalidad. Y quiero aprender cómo hacer esto, pero no he encontrado ningún tutorial u otra información sobre cómo lograrlo.
El resto: he creado mi página de búsqueda y en ella estoy ejecutando la búsqueda con:
$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);
La variable de sesión se establece cuando se envía un formulario de búsqueda y luego redirige al usuario a / site-search para realizar la búsqueda y mostrar los resultados.
Si produzco $ result, veo que es una matriz con información diferente que incluye un conjunto de resultados que es una matriz de identificadores de nodo y sus puntajes.
Podría revisarlos, tomar el nodo y mostrar los resultados yo mismo, pero creo que debe haber algún otro método para representar los resultados de la búsqueda. Sin embargo, no lo he encontrado y ese es el problema.
He estado buscando en las diferentes clases en Search API y Facet API y no puedo encontrar nada en ellas que parezca que generarían resultados.
Cualquier ayuda con esto será apreciada.
Ejemplo 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
)
)