2010-11-19 1 views
-1

Мы работаем над веб-приложением с помощью поисковой модели.спросить шаблон дизайна

В сервлете поиска он захватывает параметры запроса от клиента, а затем создает запрос поиска в спящем режиме для поиска.

Теперь проблема в параметрах из clien изменчива !.

Все параметры мы принимаем перечислены следующим образом:

1) ключевое слово.

Ключевое слово (ключевые слова), используемое для поиска, может быть обработано, только этот параметр передан. Действительный пример:

/search?keyword="test" 

2) lowleftX, lowleftY, upperrightX, upperrightY.

Эти четыре параметра должны возникать в одно и то же время или никогда. Поскольку эти четыре параметра используются для TermRangeQuery в lucene. Если один из них встречается, остальные три должны также встречаться. И эти четыре параметра могут встречаться с ключевым словом в момент времени. Действительный пример:

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

3) Категория

Это используется для ограничения области поиска (только поиск в пределах особой категории).

4) начать, ограничить

Эти два параметра, используя для разбивки на страницы.

5) returnFields

В returnFields, которые будут retivived из индекса (если она хранится в индексе) и вернуть клиенту.

Так что я понятия не имею, как построить запрос, используя синтаксис оценки (если .... else .... if ...).

Любой может сказать мне, как?

ответ

0

Я понятия не имею, что вы имеете в виду под «синтаксисом оценки», но мне кажется, что точка 1 -3 - это фактический запрос Lucene. Вам нужно будет проверить параметры и решить в зависимости от имени и количества параметров, которые вы используете для типа запроса. Используя различные подклассы Query, в частности BooleanQuery, вы затем создаете соответствующий запрос Lucene и используете его для создания Hibernate Search FullTextQuery. В этом полнотекстовом запросе указываются начальные и предельные параметры. Если вы используете прогнозы для получения значений полей непосредственно из индекса, вы также задаете имена проецируемых полей в полнотекстовом запросе. Надеюсь, это немного поможет.