2012-08-31 3 views
3

J'ai une liste de requêtes d'utilisateur à solr d'un site Web (des centaines de milliers d'entre eux). Mon exigence est de retourner toutes les requêtes, dans la liste donnée, qui sont vraies pour un document. Je sais que je pourrais indexer ce document et parcourir la liste de 100000 requêtes pour voir si le document est retourné mais y at-il une méthode plus rapide?Inverser requête correspondant solr

par ex. :

  1. cartype = BMW et la couleur rouge =
  2. cartype = FORD ET FENÊTRES = 4
  3. cartype = FORD ET color = VERT

    document: <cartype>FORD</cartype> <colour>GREEN</colour> <doors>4</doors>

Ce document en question renverrait des requêtes 2 & 3.

Idéalement, je voudrais faire une sorte de recherche inversée. Indexez les requêtes de recherche et envoyez le contenu du document pour renvoyer les correspondances. Quelqu'un sait-il comment je pourrais y aller ou a-t-il déjà été essayé?

Toute entrée put être grandement appréciée merci.

+0

Ce serait une grande fonctionnalité et ont essayé de penser à un moyen de faire la même chose. Un autre produit de recherche que j'utilise a cette fonctionnalité appelée "profiler" http://www.thunderstone.com/site/vortexman/profiler.html –

Répondre

6

Pouvez-vous envisager de passer à elasticsearch? Désolé mais l'usecase semble parfait pour le Percolate API, une fonctionnalité très utile qu'offre elasticsearch.

Vous indexeriez vos requêtes au lieu de documents, en leur attribuant un identifiant unique. Ensuite, vous pouvez envoyer vos documents un par un et revenir sur les requêtes correspondantes, sans même indexer les documents. Vérifiez-le!

+0

Cela semble parfait est juste :) Je peux mettre en place un moteur différent à cet effet. J'adorerais savoir comment cela fonctionne sous le capot et utiliser avec solr mais cela répond à ma question. Merci – everreadyeddy

+0

wow ... on dirait que je vais explorer elasticsearch ce week-end! –

+0

@dwhelan C'est vraiment un bon choix! ;) – javanna