Problème: besoin d'exécuter mes propres recherches par programme avec l'API de recherche. Chaque résultat google que je trouve est destiné à enseigner aux non-développeurs comment utiliser le module avec Views sans aucun résultat sur le faire comme je le souhaite.
Information:
- Utilisation du service de base de données local au lieu de Solr ou de tout autre.
- Avoir des données non stockées dans la base de données qui apparaîtront aux côtés d'autres résultats.
- Le contenu sera regroupé dans des onglets "type".
- Ne pas utiliser les vues pour diverses raisons.
- Avoir l'API Facets activée mais aucune idée de comment l'utiliser non plus.
Pourquoi: parce que je veux que la page de recherche soit dans / site-search et sans / node / keyword après l'argument de page. Il vous sera également demandé de personnaliser cela au-delà de la portée d'autres modules qui peuvent fournir le même type de fonctionnalité. Et je veux apprendre à le faire, mais je n'ai pas trouvé de tutoriels ou d'autres informations sur la façon de l'accomplir.
Le reste: j'ai créé ma page de recherche et sur celle-ci j'exécute la recherche avec:
$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 session est définie lorsqu'un formulaire de recherche est soumis, puis redirige l'utilisateur vers / site-search pour effectuer la recherche et afficher les résultats.
Si je génère $ result, je vois que c'est un tableau avec des informations différentes, y compris un jeu de résultats qui est un tableau d'ID de noeud et leurs scores.
Je pourrais les parcourir, saisir le nœud et afficher les résultats moi-même, mais je pense qu'il doit y avoir une autre méthode pour rendre les résultats de la recherche. Je ne l'ai pas trouvé cependant et c'est le problème.
J'ai parcouru les différentes classes de l'API de recherche et de l'API de facette et je ne trouve rien en elles qui semble générer des résultats.
Toute aide à cet égard sera appréciée.
Exemple de résultats:
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
)
)
Réponses:
Avez-vous regardé le module de pages API de recherche . Il utilise le module API de recherche et crée une page de recherche personnalisée. Vous pouvez probablement consulter ce module pour obtenir des indices sur la façon de mettre en œuvre ce que vous essayez de faire. Le module lui-même peut même fournir une grande partie des fonctionnalités que vous recherchez.
la source
Voici ma solution en environ 100 lignes - un peu plus simple que les pages ...
la source