Cet ensemble fournit une interface uniforme pour la recherche en texte intégral avec divers moteurs de recherche et un contrôleur avec des modèles de brindilles pour afficher les formulaires et les résultats de recherche.
Remarque : Vous consultez la version 2 de cet ensemble, qui a connu d'importants changements par rapport à la version 1.
Cet ensemble de recherche simplifie l'ajout de recherche à votre site.
À votre disposition sont :
Pour l'instant, la recherche sur site Google est prise en charge dès le départ. Il existe une implémentation utilisant l'API Google REST et une implémentation utilisant la fonctionnalité d'élément de recherche personnalisé qui charge la recherche avec uniquement du javascript dans l'interface.
Les contributions pour d’autres services sont les bienvenues.
Installez le bundle avec composer require liip/search-bundle
.
Incluez le bundle dans app/Kernel.php.
Ajoutez votre moteur de recherche préféré dans app/config/config.yml :
liip_search :
clients :
google_rest :
api_key : ' %google.api_key% '
search_key : ' %google.search_key% '
Ou si vous utilisez le moteur de recherche personnalisé javascript de Google :
liip_search :
clients :
google_cse :
cse_id : ' %google.search_key% '
Vous pouvez afficher un champ de recherche n'importe où sur la page avec la fonction twig liip_search_box :
{{ liip_search_box(query, 'query-field-id', 'css-class') }}
Vous pouvez personnaliser le champ de recherche avec ces paramètres :
<form>
.Créez un itinéraire pour l'action de recherche. Le plus simple est d'utiliser simplement le fichier router.xml fourni à partir de votre projet principal router.xml :
liip_search:
resource: "@LiipSearchBundle/Resources/config/routing.xml"
Il s'agit par défaut de l'URL /search
. Si vous souhaitez un itinéraire différent, utilisez l'option prefix
lors de l'inclusion de l'itinéraire ou configurez votre propre itinéraire en utilisant %liip_search.controller.search_action%
comme valeur par défaut pour _controller
.
Les modèles de résultats de recherche fournis par ce bundle étendent le modèle LiipSearchBundle::layout.html.twig
. Pour intégrer le reste de votre site, vous avez deux options :
app/Resources/LiipSearchBundle/views/layout.html.twig
et étendez-le votre mise en page de base, en plaçant un bloc liip_search_content
là où vous souhaitez les résultats de la recherche.app/Resources/LiipSearchBundle/views/Search/search.html.twig
et créez votre propre structure de modèle - vous devriez pouvoir use
le modèle search_results.twig.html
pour obtenir le bloc liip_search_content
.Bien sûr, vous pouvez également remplacer n'importe lequel des modèles pour personnaliser ce qu'ils doivent faire. Voir http://symfony.com/doc/master/book/templating.html#overriding-bundle-templates
Voici la référence complète de ce que vous pouvez configurer sous la clé liip_search
:
search_factory
chaîne , valeur par défaut : null
Spécifiez un service personnalisé qui implémente LiipSearchBundleSearchFactoryInterface
. Ce service sera utilisé par le contrôleur pour créer des instances Pagerfanta
afin de gérer la recherche.
Si vous configurez l'un des services du moteur de recherche, vous n'avez pas besoin de définir ce champ.
search_route
chaîne , valeur par défaut : liip_search
Le nom de l'itinéraire qui gérera les demandes de recherche soumises.
restrict_language
booléen , valeur par défaut : false
Remplacez ceci par true si vous souhaitez demander au service de recherche de limiter les résultats à la langue de la demande.
La configuration de l'une de ces options active le service du moteur de recherche Google. Ils se trouvent sous clients.google_rest
.
api_key
chaîne , obligatoire
Votre clé API Google
search_key
chaîne|tableau , obligatoire
La clé identifiant votre moteur de recherche Google. Peut être une liste de clés indexées par paramètres régionaux pour utiliser différents moteurs par paramètres régionaux. Si vous contrôlez les paramètres régionaux via des moteurs de recherche distincts, vous n'avez pas besoin de définir restrict_language
sur true, sauf si vous souhaitez que vos moteurs de recherche personnalisés reçoivent en plus une restriction de langue.
api_url
chaîne , valeur par défaut : https://www.googleapis.com/customsearch/v1
L'URL de l'API de recherche Google pour les appels REST
restrict_to_site
chaîne , valeur par défaut : null
S'il est laissé vide, tous les sites configurés pour les moteurs de recherche Google sont recherchés. Définissez sur un domaine pour vous limiter à ce domaine.
La configuration de cette section active un contrôleur différent qui restitue le fragment Javascript pour activer la recherche CSE. Cette configuration se trouve sous clients.google_cse
.
cse_id
chaîne|tableau , obligatoire
Clé identifiant votre moteur de recherche personnalisé Google. Peut être une liste de clés indexées par paramètres régionaux pour utiliser différents moteurs par paramètres régionaux. CSE ne prend pas en charge restrict_language
, donc différents moteurs de recherche par langue constituent votre seule option pour restreindre la langue des résultats de recherche.
Si vous obtenez SearchException
indiquant "Réponse vide reçue de l'API du moteur de recherche Google", essayez de copier l'URL générée dans un navigateur. Vous devriez obtenir une réponse JSON, mais elle aura probablement un statut d'erreur.
Si vous obtenez un statut 500 avec un message vide, il est probable que vous deviez renouveler le moteur de recherche dans le panneau d'administration de Google.
Implémentez LiipSearchBundleSearchInterface
et configurez-le en tant que service. Définissez ensuite liip_search.search_client
sur ce nom de service.