Frage

Wir arbeiten an Web-Anwendung mit einem Suchmodell.

Auf der Suche Servlet es die Anforderungsparameter vom Client erfassen und dann eine Hibernate-Suchabfrage für die Suche bauen.

Das Problem ist jetzt die Parameter vom Client sind wandelbar!.

Alle Parameter, die wir wie folgt aufgelistet akzeptiert:

1) Stichwort.

Das Schlüsselwort (e) für die Suche verwendet wird, eine Suchanfrage auch verarbeitet werden kann, nur diese Parameter übergeben wird.

Gültiges Beispiel:

/search?keyword="test"

2) lowleftX, lowleftY, upperrightX, upperrightY.

Diese vier Parameter muss zur gleichen Zeit oder never.Since treten diese vier paramers für eine TermRangeQuery in lucene verwendet werden. Wenn einer von ihnen auftritt, drei der Rest auch auftreten werden müssen.

Und diese vier Parameter kann mit dem „Schlüsselwort“ am sametime auftreten.

Gültiges Beispiel:

/search?lowleftX=10&lowleftY=10&upperrightX=40&upperrightY=30
/search?lowleftX=10&lowleftY=10&upperrightX=40&upperrightY=30&keyword="test"

3) Kategorie

Dies wird verwendet, den Suchbereich zu begrenzen (nur innerhalb der Sonderkategorie suchen).

4) beginnen, Grenze

Diese beiden Parameter für das Paging verwendet wird.

5) returnFields

Die returnFields, die aus dem Index abgerufen werden und zurück an den Client (wenn sie im Index gespeichert wird).

Also ich habe keine Ahnung, wie die Abfrage zu erstellen, die Schätzung Syntax (wenn .... sonst .... wenn ...).

Kann jemand mir sagen, wie?

War es hilfreich?

Lösung

Ich habe keine Ahnung, was Sie mit „schätzt Syntax“ bedeuten, aber es scheint mir, dass Punkt 1 -3 ist die tatsächliche Lucene Abfrage. Sie müssten die Parameter überprüfen und entscheiden über den Namen und die Anzahl von Parametern abhängig, welche Art der Abfrage, die Sie haben. Mit den verschiedenen Unterklassen von Query insbesondere BooleanQuery, bauen Sie dann eine entsprechende Lucene Abfrage und es verwenden, eine Hibernate Search FullTextQuery zu erstellen. Auf dieser Volltext-Abfrage, um die Start- und Grenze paramters angeben. Wenn Sie Projektionen verwenden die Feldwerte direkt aus dem Index abgerufen werden Sie auch die projizierten Feldnamen auf der Volltext-Abfrage gesetzt. Ich hoffe, das hilft ein wenig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top