¿Cómo hacer que los sinónimos de taxonomía funcionen de manera sólida con Search API?

20

Los sinónimos de etiquetas son una característica popular e importante en muchos sitios (utilizados aquí en StackExchange, por ejemplo), y los sinónimos de taxonomía solían ser parte del módulo de taxonomía central de Drupal 6, antes de ser descartados en favor de los sistemas de sinónimos personalizados "Roll your own" creados usando la API de campo .

Cuando los sinónimos funcionan de manera confiable, son extremadamente útiles en la búsqueda; por ejemplo, para asegurarse de que las búsquedas de "América" contenido hallazgo etiquetados "EE.UU.", etc. Sin embargo, no puedo encontrar ninguna pista sobre lo que es el método estándar para la implementación de esta característica cuando se trabaja con el popular Search API - API Faceta familia de módulos de búsqueda integrada relacionados, para búsquedas de nodos.

"Seguir la corriente" es importante cuando se trabaja con grupos de módulos como este, para asegurarse de que los sistemas que implemente no vayan en contra del pensamiento de la comunidad y los mantenedores de módulos. Cuando van contra la corriente, son descamables y corren el riesgo de que se rompan por futuros cambios en estos módulos.

¿Cuál es un método confiable / robusto / estándar / esperado para implementar sinónimos de taxonomía en D7 para sitios que usan la API de búsqueda? (en particular, con Search API Solr , pero espero que los intentos de Search API para abstraer el proveedor de búsqueda en particular funcionen en este caso).

Si tienes un sistema para esto que parece funcionar, pero es algo que descubriste y no estás seguro de si es o no contradictorio (bastante común en Drupal), por favor compártelo de todos modos con la información de tu prueba, uso y experiencia sobre qué características y módulos de la familia Search API-Facet API sí funciona y no funciona bien.

Algunas opciones plausibles pero potencialmente descabelladas que he encontrado en la investigación:

  • Hay un módulo D7 Search Sinónimos , pero parece ser poco utilizado, y no hay confirmación de que funcione o continúe funcionando con módulos de búsqueda de terceros como Search API (está diseñado teniendo en cuenta la búsqueda principal de Drupal). Editar: tampoco parece ser demasiado confiable en D7 en general .
  • Teóricamente es posible agregar un campo de referencia de término llamado "Sinónimos" a un vocabulario de taxonomía e indexar este campo desde el término en la API de búsqueda con el mismo peso que el término en el propio nodo. Esto funcionaría para búsquedas de texto, pero se siente como una solución superficial de cinta adhesiva MacGuyver-y en lugar de algo robusto que se inserte sin problemas en toda la familia de API de búsqueda. Por ejemplo, si un término "Reino Unido" tiene un sinónimo "Gran Bretaña", alguien que busque en 'Gran Bretaña' obtendría resultados etiquetados con United Kindgom, pero alguien que escriba "Gran Bretaña" en un filtro expuesto de Taxonomía autocompletada o seleccione Gran Bretaña con un hecho de Taxonomía no vería ningún contenido etiquetado con "Reino Unido". *****
  • Otra posibilidad similar es agregar un campo de texto plano de varios valores "Sinónimos" al vocabulario del término (o incluso separados por comas, supongo) e indexarlo con el mismo peso que el nombre del término anterior. Pero esto tiene problemas similares, si no peores, a los anteriores en el ejemplo anterior, "Gran Bretaña" ni siquiera estaría en la lista como una opción en una faceta o filtro expuesto. Puede haber alguna forma de crear un campo compuesto combinando nombre y sinónimos ("Reino Unido (Gran Bretaña, Reino Unido)"), y establecer facetas / filtros expuestos / etc. para usar eso ... pero no se me ocurre ninguna manera hacer esto que no es preocupantemente hacky y que no se siente preocupante contra la corriente. Editar: Search API Combined parece diseñado para algo como esto, pero yo '
  • Luego está la opción de último recurso de incluir todo en el nombre del término: debe quedar claro que esto no es deseable y en muchos casos sería una lista muy fea (por ejemplo, imagine una lista de navegación de países que se escribieron como "Norte Corea (PRK, RPDC, República Popular Democrática de Corea) "...). O tener un campo "Nombre para mostrar" que muestra la versión corta y configurar todo excepto la búsqueda (todas las Vistas, Pathauto, cualquier otro módulo contrib / core que use el nombre del término) para usar esto en lugar del nombre del término ... nuevamente, muy hacky y muy a contrapelo.
  • Apache Solr tiene una función de sinónimos, donde se lee un archivo de texto de sinónimos y estos términos se tratan como sinónimos en las búsquedas que lo usan. Sin embargo, aunque es posible en una configuración de API de búsqueda que utiliza Solr, los encargados del módulo consideran que esta configuración avanzada de Solr no es compatible con el "intento de riesgo propio" . Además, es más apropiado para la sinonimia genérica en el idioma del sitio que la sinonimia específicamente en el contexto de una taxonomía. Por ejemplo, un sitio con una taxonomía que no discrimina a Inglaterra, Escocia, etc. de Gran Bretaña podría considerarlos sinónimos en el contexto del etiquetado, pero no en el contexto de las búsquedas en el texto del cuerpo. Editar: El responsable de mantenimiento de Facet API advierte contra esta ruta ya que los módulos de integración de Solr funcionan con términos como TID, no texto.

Soy consciente de que este es un ejemplo defectuoso porque en el caso del Reino Unido / Gran Bretaña, y de los países en general, las personas están acostumbradas a usar listas que solo tienen una u otra. Hay muchos casos menos simples (por ejemplo, categorías de productos) en los que las personas no pensarían en buscar un sinónimo.

Actualización: información relevante en un nuevo hilo en la cola de la API de Facetas Drupal.org . También un hilo (actualmente sin respuesta) en la cola de la API de búsqueda .

(cualquier abogado de reglas se pregunta si está bien que haya solicitudes de soporte de drupal.org y drupal responde preguntas sobre el mismo tema: sí, lo es, de hecho se recomienda quitarle la presión a los encargados del mantenimiento del módulo )

user56reinstatemonica8
fuente
1
¿Encontraste la solución a esto? Tengo este problema exacto ahora.
vishal

Respuestas:

2

He estado usando el excelente módulo de sinónimos de bojanz . Es una reescritura completa de la función de sinónimos D6, con una serie de nuevas campanas y silbatos. Parece que podría hacer la mayoría de lo que necesitas.

Triskelion
fuente