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> 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>
4 Réponses :
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. P>
Donc, si les types d'utilisateurs "Restaurant", votre requête est traduite pour inclure un filtre par cat = 1. P>
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/ ). P>
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). P>
Pour rechercher en utilisant Synonymes, vous aurez besoin d'une double recherche - p>
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: p> de cette façon que vous pouvez indexer l'identifiant de la catégorie. Cela signifie que vous ne sera pas strong> d'envoyer à nouveau toutes les entreprises à Solr. Également si quelqu'un requêtes strong> "logiciel" ou "it", il la mappera à la catégorie p> Votre Catégorie_SynonynonyS.txt Strort> Devrait avoir des lignes telles que celles suivantes : P> 1, logiciel, il p>
BlockQuote> 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. P> J'étais ajouté ce qui précède à mon propre solr et dirigé le Analyseur outil sur celui-ci .. Voici le résultat: P> P> Comme vous pouvez le constater que le logiciel est tourné dans P> 1 p> Veuillez noter que vous devez définir le < / p> expand p>
blockQuote> paramètre à p> faux p>
BlockQuote> J'espère que cela aide. P> Dave P> P>
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. P>