Mehrere Abfragen in Solr
Mein problem ist, ich habe n-Felder (sagen wir um die 10) in Solr, die durchsuchbar sind, Sie sind alle indiziert und gespeichert. Ich möchte eine Abfrage ausführen, die ersten auf meiner gesamten index von sagen wir 5000 docs, die getroffen werden um durchschnittlich 500 docs. Als Nächstes würde ich gerne die Abfrage mit einem anderen Satz von Schlüsselwörtern auf diesen 500 docs und NICHT auf den gesamten index.
Also das erste mal, ich sende eine Abfrage ein Ergebnis erzeugt werden, das zweite mal, dass ich eine Abfrage ausführen, die eine neue Partitur erzeugt werden soll, basierend auf die 500 Dokumente, die von der vorherigen Abfrage, oder in anderen Worten Solr sollten nur diese 500 docs als der gesamte index.
Zusammenzufassen, Index 5000 gefiltert, um 500 und dann 50 (5000>500>50). Grundsätzlich filtern, aber ich möchte diese in Solr.
Ich haben angemessene Grundkenntnisse und immer noch lernen.
Update: Wenn mathematisch würde es so Aussehen:
results1=f(query1)
results2=f(query2, results1)
final_results=f(query3, results2)
Möchte ich dies erreichen Sie mit einem Programm-und end-Benutzer werden nur 50 Ergebnisse. So Facettierung ist keine option.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Filter, Abfragen (fq) sind speziell für die schnelle Einschränkung der Ergebnismenge durch nicht tun, jede score-Berechnung.
So, wenn Sie Ihre erste Abfrage in fq parameter und Ihre zweite Punktzahl zu generieren Abfrage in der normalen 'q' - parameter, Sie sollte das tun, was Sie Fragen.
Siehe auch eine Frage, die der Erörterung dieser Frage von der entgegengesetzten Richtung.
Zwei mögliche Implementierungen auftreten, zu mir. Der einfachste Ansatz wäre, fügen Sie einfach die erste Abfrage in der zweiten Abfrage;
Dies ist ein guter Ansatz, wenn die erste Abfrage, die Sie filtern möchten, ändert sich oft. Wenn die erste Abfrage ist so etwas wie eine Kategorie von Dokumenten, oder etwas ähnliches, wo können Sie profitieren von der Wiederverwendung der gleichen filter, dann filter-Abfrage, ist der bessere Ansatz, mit Hilfe der
fq
- parameter, so etwas wie:filter-Abfragen-cache eine Reihe von Dokument-ids zu filtern gegen, so für die Häufig benutzte Suchanfragen, wie Kategorien, gemeinsame Datenbereiche, etc., einen erheblichen performance-Vorteil kann daraus gezogen werden (für ungewöhnliche sucht, oder die vom Nutzer eingegebenen Suchbegriffe, es kann nur entstehen unnötig overhead-cache, um die Ergebnisse und belasten den cache mit einem nutzlosen Ergebnis-set)
Ich glaube, Sie wollen verwenden Sie eine verschachtelte Abfrage wie diese:
Lesen Sie mehr über verschachtelte Abfragen hier:
http://searchhub.org/2009/03/31/nested-queries-in-solr/
Sollten einen Blick auf die "facettierte Suche" von Solr: http://wiki.apache.org/solr/SolrFacetingOverview Dies wird Ihnen helfen, in dieser Art des "iterativen" suchen.