Como obter sinônimos de taxonomia trabalhando de maneira robusta com a API de pesquisa?

20

Os sinônimos de tags são um recurso popular e importante em muitos sites (usados ​​aqui no StackExchange, por exemplo), e os sinônimos de taxonomia costumavam fazer parte do módulo de taxonomia principal do Drupal 6, antes de serem descartados em favor dos sistemas de sinônimos personalizados "Roll your own" usando a API do campo .

Quando os sinônimos funcionam de maneira confiável, são extremamente úteis na pesquisa; por exemplo, para garantir que as pesquisas por "América" ​​localizem conteúdo com a tag "EUA" etc. No entanto, não encontro indicações sobre o método padrão para implementar esse recurso ao trabalhar com a popular API de pesquisa - API de faceta família de módulos de pesquisa integrados relacionados, para pesquisas em Nó.

"Ir com o fluxo" é importante ao trabalhar com grupos de módulos como este, para garantir que os sistemas que você implementa não sejam contrários ao pensamento da comunidade e dos mantenedores de módulos. Quando eles vão contra o grão, eles ficam lascados e correm o risco de serem quebrados por futuras alterações nesses módulos.

O que é um método confiável / robusto / padrão / esperado para implementar sinônimos de taxonomia no D7 para sites que usam a API de pesquisa? (em particular, com o Search API Solr , mas espero que as tentativas da Search API de abstrair um determinado provedor de pesquisa funcionem nesse caso).

Se você tem um sistema para isso que parece funcionar, mas é algo que você descobriu e não tem certeza se é ou não contra o grão (bastante comum no Drupal), compartilhe-o de qualquer maneira com as informações de seu teste, uso e experiência em quais recursos e módulos da família de API de faceta da API de pesquisa ele funciona e não funciona bem.

Algumas opções plausíveis, mas potencialmente confiáveis, que encontrei na pesquisa:

  • Existe um módulo de sinônimos de pesquisa D7 , mas parece ser pouco usado e não há confirmação de que funcione ou continuará a funcionar com módulos de pesquisa de terceiros como a API de pesquisa (projetada com a pesquisa principal do Drupal em mente). Edit: também não parece ser muito confiável no D7 em geral .
  • Teoricamente, é possível adicionar um campo de referência ao termo chamado "Sinônimos" a um vocabulário de Taxonomia e indexar esse campo a partir do termo na API de Pesquisa com peso igual ao termo no próprio nó. Isso funcionaria para pesquisas de texto, mas parece uma solução superficial de fita adesiva MacGuyver-y em vez de algo robusto que se encaixa perfeitamente em toda a família da API de pesquisa. Por exemplo, se um termo "Reino Unido" tiver um sinônimo "Grã-Bretanha", alguém que pesquisar em "Grã-Bretanha" obterá resultados marcados com United Kindgom, mas alguém digitar "Grã-Bretanha" em um filtro exposto ao preenchimento automático por Taxonomia ou selecionar Grã-Bretanha com um fato de Taxonomia não veria nenhum conteúdo marcado com "Reino Unido". *****
  • Outra possibilidade semelhante é adicionar um campo de texto simples com vários valores "Sinônimos" ao termo vocabulário (ou mesmo separado por vírgula, eu acho) e indexá-lo com o mesmo peso que o nome do termo acima. Mas isso tem problemas semelhantes, se não piores, ao exemplo acima, "Grã-Bretanha" nem seria listado como uma opção em uma faceta ou filtro exposto. Pode haver alguma maneira de criar um campo composto combinando nome e sinônimos ("Reino Unido (Grã-Bretanha, Reino Unido)") e definir facetas / filtros expostos / etc para usá-lo ... mas não consigo pensar em nenhuma maneira fazer isso que não seja preocupante e hacker e que não pareça preocupante. Editar: a API de pesquisa combinada parece projetada para algo assim, mas eu '
  • Depois, há a última opção de incluir apenas o nome do termo: deve ficar claro que isso não é desejável e, em muitos casos, resultaria em listas muito feias (por exemplo, imagine uma lista de navegação de países escritos como "Norte"). Coreia (PRK, RPDC, República Popular Democrática da Coreia) "...). Ou ter um campo "Nome de exibição" que mostra a versão curta e definir tudo, exceto a pesquisa (todas as Views, Pathauto, todos os outros módulos contrib / core que usam o nome do termo) para usá-lo em vez do nome do termo ... novamente, muito hacky e muito contra a corrente.
  • O Apache Solr possui um recurso Sinônimos, onde um arquivo de texto de sinônimos é lido e esses termos são tratados como sinônimos nas pesquisas que o utilizam. No entanto, embora seja possível em uma configuração da API de pesquisa que usa o Solr, isso é considerado pelos mantenedores do módulo como uma configuração avançada do Solr sem 'tentativa de risco' . Além disso, é mais apropriado para sinonímia genérica no idioma do site do que sinonímia especificamente no contexto de uma taxonomia. Por exemplo, um site com uma taxonomia que não discrimina Inglaterra, Escócia etc. da Grã-Bretanha pode querer considerá-los sinônimos no contexto de marcação, mas não no contexto de pesquisas no texto do corpo. Edit: O principal mantenedor da API Facet adverte contra esta rota os módulos de integração Solr funcionam com termos como TIDs e não texto.

Estou ciente de que este é um exemplo defeituoso porque, no caso do Reino Unido / Grã-Bretanha e de países em geral, as pessoas estão acostumadas a usar listas que possuem apenas uma ou outra. Existem muitos casos menos simples (por exemplo, categorias de produtos) em que as pessoas não pensam em procurar um sinônimo.

Atualização: informações relevantes em um novo thread na fila da API do Drupal.org Facet . Também um segmento (atualmente sem resposta) na fila da API de pesquisa .

(qualquer advogado de regras que esteja se perguntando se não há problema em haver pedidos de suporte do drupal.org e o drupal responder a perguntas sobre o mesmo tópico: sim, é, de fato, é incentivado a aliviar a pressão dos mantenedores do módulo )

user56reinstatemonica8
fonte
11
você encontrou a solução para isso? Eu tenho esse problema exato agora.
21714

Respostas:

2

Eu tenho usado o excelente módulo de sinônimos do bojanz . É uma reescrita completa da função de sinônimos D6, com vários novos sinos e assobios. Parece que ele pode fazer a maior parte do que você precisa.

Triskelion
fonte