2017-05-17 4 views
0

Ich versuche, die Echtzeit in SOLR zu bekommen. In der Dokumentation in allen Beispielen, um Dokumente in Echtzeit zu erhalten, muss ich die ID verwenden. Ist es möglich, Echtzeit-Suche nur mit Filter zu verwenden? Solr Echtzeit bekommen - Wie in Echtzeit nur mit Filter

dies ist das Beispiel in der Dokumentation:

http://localhost:8983/solr/techproducts/get?id=mydoc&id=IW- 
02&fq=name:realtime-get 

{"response": 
    {"numFound":1,"start":0,"docs": 
    [ { "id":"mydoc", 
     "name":"realtime-get test!", 
     "_version_":1487137811571146752} 
    ] 
    } 
} 

und ich möchte etwas wie folgt aus:

http://localhost:8983/solr/techproducts/get?fq=name:realtime-get 
{"response": 
    {"numFound":1,"start":0,"docs": 
    [ { "id":"mydoc", 
     "name":"realtime-get test!", 
     "_version_":1487137811571146752} 
    ] 
} 
} 

Antwort

0

Ihre letzte Beispiel verwendet die Filterabfrage als eine einzelne Abfrage, die, dass man annimmt, nur Ich will keine Wertung. Für den Abfrageteil können Sie *:* verwenden, das eine spezielle Abkürzung für das Zurückgeben aller Dokumente ist, d. H. q=*:*&fq=name=realtime-get.

Wenn Sie Scoring anwenden möchten, können Sie einfach den Filter als Ihre Abfrage verwenden, q=name:realtime-get.

Es gibt nichts besonderes über "Echtzeit-Suche" bei der Abfrage; nur, indem Sie Soft-Commits anstelle von Hard-Commits durchführen (was bedeutet, dass Daten verloren gehen, wenn ein Stromausfall auftritt, bevor das Hard-Commit stattfindet, da das Soft-Commit nur im Speicher verfügbar ist).

0

Nein, das geht nicht.

Echtzeit bekommen haben spezielle Anforderungen, speziell, dass Sie die Suche nur durch Unikat-Schlüssel tun müssen.

Auch wenn Sie fqs hinzufügen können, sind solche, optional, aber nicht genug, kann man nicht einfach überspringen Sie die ‚id‘ (oder ‚Ids‘) param, wo Sie die einzigartige-Schlüssel geben (s)