2010-11-19 11 views
-1

Wir arbeiten an Web-Anwendung mit einem Suchmodell.Fragen Sie nach einem Entwurfsmuster

Im Such-Servlet erfasst es die Anfrageparameter vom Client und erstellt dann eine Suchfrage im Ruhezustand für die Suche.

Jetzt ist das Problem, die Parameter aus dem Client sind veränderbar !.

Alle Parameter, die wir akzeptiert werden wie folgt aufgeführt:

1) Stichwort.

Die Schlüsselwörter, die für die Suche verwendet werden, eine Suchanforderung kann verarbeitet werden, auch wenn nur dieser Parameter übergeben wird. Valid Beispiel:

/search?keyword="test" 

2) lowleftX, lowleftY, upperrightX, upperrightY.

Diese vier Parameter müssen gleichzeitig oder nie auftreten. Da diese vier Parameter für eine TermRangeQuery in lucene verwendet werden. Wenn einer von ihnen auftritt, müssen auch die restlichen drei auftreten. Und diese vier Parameter können gleichzeitig mit dem "Schlüsselwort" 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 (Suche nur in der Sonderkategorie).

4) starten, begrenzen

Diese beiden Parameter für das Paging verwendet wird.

5) returnFields

Die returnFields, die aus dem Index retivived wird (wenn es in dem Index gespeichert ist) und zurück an den Client.

So habe ich keine Ahnung, wie Sie die Abfrage mit der Schätzungssyntax erstellen (wenn .... sonst .... wenn ...).

Jeder kann mir sagen, wie?

Antwort

0

Ich habe keine Ahnung, was Sie mit "Schätzung Syntax" meinen, aber es scheint mir, dass Punkt 1 -3 die tatsächliche Lucene-Abfrage sind. Sie müssten die Parameter überprüfen und entscheiden je nach Name und Anzahl der Parameter, welche Art von Abfrage Sie haben. Mit den verschiedenen Unterklassen von Query, insbesondere BooleanQuery, erstellen Sie dann eine geeignete Lucene-Abfrage und verwenden diese, um eine Hibernate Search FullTextQuery zu erstellen. In dieser Volltextabfrage geben Sie die Start- und Limitparameter an. Wenn Sie Projektionen verwenden, um die Feldwerte direkt aus dem Index abzurufen, legen Sie auch die Namen der projizierten Felder in der Volltextabfrage fest. Ich hoffe das hilft ein wenig.

Verwandte Themen