2010-11-19 81 views
-1

我們正在使用搜索模型開發Web應用程序。請求設計模式

在搜索servlet中,它從客戶端捕獲請求參數,然後構建一個用於搜索的hibernate搜索查詢。

現在的問題是來自clien的參數是可變的!

我們接受的所有參數如下:

1)關鍵字。

即使只傳遞此參數,也可以處理搜索請求使用的關鍵字。 有效例如:

/search?keyword="test" 

2)lowleftX,lowleftY,upperrightX,upperrightY。

這四個參數必須同時發生或永遠不會發生。因爲這四個參數用於lucene中的TermRangeQuery。如果其中一個發生,其餘三個必須同時發生。 而且,這四個參數可以與「關鍵字」同時發生。 有效例如:

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

3)類

這是用來限制搜索範圍(只是特殊類別中進行搜索)。

4)開始,限制

這兩個參數用於分頁。

5)returnFields

這將從索引中retivived(如果它在索引存儲在returnFields),並返回給客戶端。

所以我不知道如何使用估計語法(if .... else .... if ...)來構建查詢。

任何人都可以告訴我如何?

回答

0

我不知道「估計語法」是什麼意思,但在我看來,點1-3是實際的Lucene查詢。您將必須檢查參數並根據參數的名稱和數量來決定哪種查詢類型。使用Query的不同子類,特別是BooleanQuery,然後構建一個合適的Lucene查詢並使用它創建一個Hibernate Search FullTextQuery。在此全文查詢中,指定開始和限制參數。如果您使用投影直接從索引檢索字段值,則還可以在全文查詢中設置投影字段名​​稱。 我希望這會有所幫助。