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
)
)
Respuestas:
¿Has mirado en el API páginas módulo de búsqueda . Utiliza el módulo API de búsqueda y crea una página de búsqueda personalizada. Probablemente podría mirar ese módulo para obtener pistas sobre cómo implementar lo que está tratando de hacer. El módulo en sí mismo podría incluso proporcionar una gran cantidad de la funcionalidad que está buscando.
fuente
Aquí está mi solución en aproximadamente 100 líneas, un poco más simple que las páginas ...
fuente