Comment faire fonctionner les synonymes de taxonomie avec l'API de recherche?


20

Les synonymes de balises sont une fonctionnalité importante et populaire dans de nombreux sites (utilisés ici sur StackExchange, par exemple), et les synonymes de taxonomie faisaient partie du module de taxonomie de base de Drupal 6, avant d' être abandonnés au profit de "Roll your own". en utilisant l'API Field .

Lorsque les synonymes fonctionnent de manière fiable, ils sont extrêmement utiles dans la recherche; par exemple, pour vous assurer que les recherches sur "Amérique" trouvent du contenu étiqueté "USA", etc. Cependant, je ne trouve aucune piste sur la méthode standard pour implémenter cette fonctionnalité lorsque vous travaillez avec l' API de recherche populaire - API Facet famille de modules de recherche intégrés connexes, pour les recherches de nœuds.

«Aller avec le flux» est important lorsque vous travaillez avec des clusters de modules comme celui-ci, pour vous assurer que les systèmes que vous implémentez ne vont pas à l'encontre de la pensée de la communauté et des responsables de module. Quand ils vont à contre-courant, ils sont floconneux et risquent d'être cassés par les modifications futures de ces modules.

Qu'est-ce qu'une méthode fiable / robuste / standard / attendue pour implémenter des synonymes de taxonomie dans D7 pour les sites utilisant l'API de recherche? (en particulier, avec l' API de recherche Solr , mais j'espère que les tentatives de l'API de recherche d'abstraire le fournisseur de recherche particulier fonctionneront dans ce cas).

Si vous avez un système pour cela qui semble fonctionner, mais c'est quelque chose que vous avez compris et vous n'êtes pas sûr qu'il soit ou non à contre-courant (assez courant dans Drupal), veuillez le partager de toute façon avec les informations de votre tests, utilisation et expérience sur les fonctionnalités et modules de la famille API Search API-Facet avec lesquels il fonctionne et ne fonctionne pas bien.

Quelques options plausibles mais potentiellement floconneuses que j'ai trouvées dans la recherche:

  • Il existe un module D7 Search Synonymes , mais il semble peu utilisé, et il n'y a aucune confirmation qu'il fonctionne ou continuera de fonctionner avec des modules de recherche tiers comme l'API de recherche (il est conçu avec la recherche principale Drupal à l'esprit). Edit: ne semble pas trop fiable en D7 en général .
  • Il est théoriquement possible d'ajouter un champ de référence de terme appelé "Synonymes" à un vocabulaire de taxonomie, et d'indexer ce champ à partir du terme dans l'API de recherche avec un poids égal au terme sur le nœud lui-même. Cela fonctionnerait pour les recherches de texte, mais ressemble à une solution de ruban adhésif MacGuyver-y peu profond plutôt qu'à quelque chose de robuste qui s'intègre facilement à toute la famille de l'API de recherche. Par exemple, si un terme «Royaume-Uni» a un synonyme «Grande-Bretagne», quelqu'un recherchant «Grande-Bretagne» obtiendrait des résultats balisés avec United Kindgom, mais quelqu'un tapant «Grande-Bretagne» dans un filtre exposé de taxonomie à saisie semi-automatique ou sélectionnant Grande-Bretagne avec un fait de taxonomie ne verrait aucun contenu marqué avec "Royaume-Uni". *****
  • Une autre possibilité similaire consiste à ajouter un champ de texte brut à plusieurs valeurs "Synonymes" au vocabulaire du terme (ou même séparé par des virgules, je suppose), et à l'indexer avec le même poids que le nom du terme comme ci-dessus. Mais cela a des problèmes similaires, sinon pires, à ceux ci-dessus dans l'exemple ci-dessus, "la Grande-Bretagne" ne serait même pas répertoriée comme une option dans une facette ou un filtre exposé. Il pourrait y avoir un moyen de créer un champ composite en combinant le nom et les synonymes ("Royaume-Uni (Grande-Bretagne, Royaume-Uni)"), et définir des facettes / filtres exposés / etc. pour l'utiliser ... mais je ne peux penser à aucune façon pour faire cela qui n'est pas inquiétant et qui ne se sent pas inquiétant contre le grain. Edit: Search API Combined semble conçu pour quelque chose comme ça, mais je '
  • Ensuite, il y a l'option de dernier recours de tout entasser dans le nom du terme: il devrait être clair que ce n'est pas souhaitable et rendrait dans de nombreux cas des listes très laides (par exemple, imaginez une liste de navigation de pays qui ont été écrits comme "Nord"). Corée (PRK, RPDC, République populaire démocratique de Corée) "...). Ou avoir un champ "Nom d'affichage" qui montre la version courte, et tout paramétrer sauf la recherche (toutes les vues, Pathauto, tous les autres modules contrib / core qui utilisent le nom du terme) pour l'utiliser à la place du nom du terme ... encore une fois, très hacky et très à contre-courant.
  • Apache Solr a une fonction Synonymes, où un fichier texte de synonymes est lu et ces termes sont traités comme synonymes dans les recherches qui l'utilisent. Cependant, bien que cela soit possible dans une configuration d'API de recherche qui utilise Solr, les responsables du module considèrent que cette configuration avancée de Solr n'est pas prise en charge . En outre, il est plus approprié pour la synonymie générique dans la langue du site que pour la synonymie spécifiquement dans le contexte d'une taxonomie. Par exemple, un site dont la taxonomie ne fait pas de distinction entre l'Angleterre, l'Écosse, etc. de la Grande-Bretagne pourrait vouloir les considérer comme synonymes dans le contexte du balisage, mais pas dans le contexte des recherches sur le corps du texte. Edit: le responsable principal de l'API Facet met en garde contre cette route car les modules d'intégration Solr fonctionnent avec des termes comme des TID et non du texte.

Je sais que c'est un exemple erroné car dans le cas du Royaume-Uni / Grande-Bretagne et des pays en général, les gens ont l'habitude d'utiliser des listes qui n'ont que l'un ou l'autre. Il existe de nombreux cas moins simples (par exemple, des catégories de produits) où les gens ne penseraient pas à chercher un synonyme.

Mise à jour: informations pertinentes dans un nouveau fil sur la file d'attente de l'API Facet Drupal.org . Également un thread (actuellement sans réponse) sur la file d'attente de l'API de recherche .

(tout avocat des règles se demandant s'il est acceptable qu'il y ait des demandes d'assistance drupal.org et drupal répond aux questions sur le même sujet: oui, en fait, il est encouragé de supprimer la pression des mainteneurs de module )


1
avez-vous trouvé la solution à cela? J'ai ce problème exact maintenant.
vishal

Réponses:


2

J'utilise l'excellent module Synonymes de bojanz . Il s'agit d'une réécriture complète de la fonction de synonymes D6, avec un certain nombre de nouvelles cloches et sifflets. On dirait qu'il pourrait faire la plupart de ce dont vous avez besoin.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.