Ich arbeite auf einem Suchserver so etwas wie elastische Suche. Nur ein kleines Projekt, das ich gerade entwickle. Habe die meisten Teile fertiggestellt, bin aber festgefahren, wie der Benutzer mit dem System interagieren würde.Erstellen Sie eine Abfragesprache mit Python
Ich entschied zunächst, dass der Benutzer anfordern würde, indem Sie eine JSON-Abfrage mit erforderlichen Feldern und seinen Werten senden. Aber das Problem, mit dem ich konfrontiert bin, ist, dass ich, obwohl ich Abfragen mit dem Json-Weg auswerten kann, nicht in der Lage wäre, Boolesche Abfragen und Compounf-Anweisungen zu implementieren.
Ich habe versucht, so etwas wie
index: name
schema:name
field1: value
field 2: value
aber es könnte auch so etwas wie diese, wenn Booleschen Ausdruck implementiert
index : name
schema : name
field 1 : name1 or name 2
field 2: <9.22 and >=2.32
field 3: (<9.22 and >=2.32) or (<100 and >90) // compound statement.
Gibt es eine etwas einfache Möglichkeit, dies zu realisieren, ohne eine tatsächlich zu schaffen Abfragesprachgrammatik. Wenn ja, wie könnte ich das erreichen, wenn nicht dann auch dasselbe.
Ich dachte daran, Werte basierend auf und/oder von jedem Feld zu teilen, aber das würde nicht funktionieren, wenn es zusammengesetzte Aussagen gibt.
Ich habe auch Pyparsing ausgecheckt, aber ich konnte keinen funktionierenden Weg finden, das zu benutzen.
Auschecken [whoosh] (https://bitbucket.org/mchaput/whoosh/wiki/Home) oder [plyse] (https://github.com/sebastiandev/plysse). Außerdem enthält pyparsing mehrere Beispiele von Abfrageparsern auf der Seite [Examples] (http://pyparsing.wikispaces.com/Examples). – PaulMcG