Gibt es eine Größe oder einen Begriff limit für ein Solr query-string bei der Verwendung von HTTP POST?

Bin ich mit Java Abfragen eine Solr-server für die Ergebnisse, die IDs in einer Reihe von bekannten IDs, ich bin interessiert.

Die beste Möglichkeit, die ich denken konnte, um zu bekommen genau diese Ergebnisse, die ich bin daran interessiert war zu einem langen query-string, der ungefähr so aussieht:

q=(item_id:XXX33-3333 OR item_id:YYY42-3445 OR item_id:JFDE-3838)

Generiere ich diese Zeichenfolge queryString, bevor Sie meinen Antrag, und es sind über 1500 solcher ids in der Anforderung enthalten sind, würde ich irgendwann gern machen. Ich bin mit einem HTTP POST, um die Abfrage als solche:

        HttpPost post = new HttpPost(url);
        post.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");

        StringEntity entity = new StringEntity(queryString, "UTF-8");
        entity.setContentType("application/x-www-form-urlencoded; charset=utf-8");
        post.setEntity(entity);

        HttpClient client = new DefaultHttpClient();
        HttpResponse response = client.execute(post);

Wenn ich die Grenze der Abfrage nur die ersten 1000 ids, es gelingt und ich bekomme die Ergebnisse zurück, als ich erwarten würde. Wenn ich allerdings erhöhen Sie die Abfrage, um alle 1500, die mich wirklich interessieren, bekomme ich einen HTTP 400-response-code mit der folgenden Fehlermeldung:

HTTP/1.1 400 org.apache.lucene.queryParser.ParseException: Cannot parse '[my query here...]

Gibt es eine Begrenzung für die Anzahl von ids, die ich kann ODER zusammen in ein Solr query? Gibt es einen anderen Grund, warum dies sein könnte Versagen, wenn ich gehen vorbei an 1000? Ich habe experimentiert und es schlägt fehl, um 1024 (meine ids sind alle fast die gleiche Länge), so dass es zu suggerieren scheint, es ist ein Zeichen oder einen Begriff limit.

Oder, wenn jemand einen guten Vorschlag, wie ich das abrufen kann, die Dinge, die ich bin auf der Suche nach in einem anderen, intelligenter, Weise, würde ich es gerne hören. Meine backup-Lösung ist einfach zu query Solr für alle Elemente, analysieren Sie die Ergebnisse, und verwenden Sie diejenigen, die zu dem set gehören ich bin interessiert. Ich würde es vorziehen, dies nicht zu tun, da die Datenquelle könnte Zehntausende von Elementen, und es wäre ineffizient.

InformationsquelleAutor mattgmg1990 | 2013-04-24
Schreibe einen Kommentar