6
votes

Associations Solr

Les deux derniers jours, nous pensons à utiliser Solr comme moteur de recherche de choix. La plupart des fonctionnalités dont nous avons besoin sont hors de la boîte ou peuvent être facilement configurés. Il y a cependant une caractéristique que nous avons absolument besoin que cela semble être bien caché (ou manquant) dans Solr.

Je vais essayer d'expliquer avec un exemple. Nous avons beaucoup de documents qui sont en fait des entreprises: p> xxx pré>

De plus, nous avons un autre fichier XML avec toutes les catégories et synonymes: p>

<cat id=1>
  <name>software</name>
  <synonym>IT<synonym>
</cat>
<cat id=2>
  <name>fast food</name>
  <synonym>restaurant<synonym>
</cat>


0 commentaires

4 Réponses :


0
votes

Vous ne pouvez pas trouver les informations d'informations non annoncées, à moins que vous n'ayez mis en œuvre une sorte de traduction / expansion de requête qui traduit des termes de requête dans leur équivalent indexé avant de soumettre la requête.

Donc, si les types d'utilisateurs "Restaurant", votre requête est traduite pour inclure un filtre par cat = 1.

Autant que je sache que SOLR n'inclut pas cette fonctionnalité, vous devez donc la mettre en oeuvre à vous-même ou adapter un module approprié (comme http://lucène-qe.sourceforge.net/ ).


0 commentaires

4
votes

Fondamentalement, vous avez une décision de conception ici. La chose habituelle que les gens font avec les indices de solr sont de les dénormaliser, c'est-à-dire exploser la définition de catégorie dans le document de l'entreprise. Comme vous ne voulez pas faire cela, je suggère de conserver deux types de documents - une pour les entreprises et une autre pour les catégories. Vous pouvez conserver les deux dans le même indice, car SOLR n'exige pas que tous les documents ont les mêmes champs. Les documents commerciaux semblent simples, mais vous devez les faire consulter à la fois par le nom d'entreprise et l'ID de catégorie. Je suggère de créer un document de catégorie pour chaque synonyme, où vous recherchez par synonyme et trouvez l'ID (et le nom de la catégorie).

Pour rechercher en utilisant Synonymes, vous aurez besoin d'une double recherche -

  • Recherchez dans la catégorie ID en utilisant le texte du nom.
  • Recherchez des entreprises à l'aide de l'ID de catégorie.

0 commentaires

2
votes

Il y a en fait une classe de filtrage appelée SOLR.SYNONONYLFILERTERFY .

Ceci devrait vous permettre de cartographier les numéros de CAT sur ses 2 équivalents de texte, si vous l'utilisez dans l'analyseur de requête uniquement, quelque chose comme ce qui suit: xxx

de cette façon que vous pouvez indexer l'identifiant de la catégorie. Cela signifie que vous ne sera pas d'envoyer à nouveau toutes les entreprises à Solr. Également si quelqu'un requêtes "logiciel" ou "it", il la mappera à la catégorie

Votre Catégorie_SynonynonyS.txt Devrait avoir des lignes telles que celles suivantes :

1, logiciel, il

Le SEULSDraw Retour ici est que vous devrez créer un moyen d'éditer le document texte lorsque vous modifiez les noms ou synonymes. Je suppose donc que cela ne vous aidera que si vous changez de la catégorie les noms rarement ?? À moins que quelqu'un d'autre ne sait de manière à ce que cela puisse être fait facilement.

J'étais ajouté ce qui précède à mon propre solr et dirigé le Analyseur outil sur celui-ci .. Voici le résultat:

 Texte alt

Comme vous pouvez le constater que le logiciel est tourné dans

1

Veuillez noter que vous devez définir le < / p>

expand

paramètre à

faux

J'espère que cela aide.

Dave


0 commentaires

0
votes

Autre que certaines des excellentes idées offertes précédemment, vous pouvez également consulter un multiplicateur de champs. Donc, votre champ de catégorie peut contenir n'importe quel nombre de valeurs (et mis à jour si nécessaire), lorsque vous effectuez une recherche, il interroge toutes les valeurs.


0 commentaires