2010-04-14 3 views
0

Какой будет лучший подход, если у меня есть поля поиска для 20 или более, и любая комбинация должна быть действительной. Есть ли какой-нибудь особый способ сделать это в openJPA или родном SQL лучше. Любая идея была бы полезной. Спасибо.несколько полей поиска

+0

Ваши требования к любому из 20 + полей для поиска будут затруднять использование индекса в вашем запросе, что приведет к медленному поиску –

ответ

0

Я думаю, вы можете использовать что-то вроде «Hibernate Search», которое привносит силу полнотекстовых поисковых систем в модель БД. Таким образом, вы можете предоставить подобную функцию поиска Google, чтобы выполнять любую комбинацию поиска, которую хотят выполнить ваши клиенты.

Я разработал демонстрационное приложение с графическим интерфейсом для тестирования различных типов запросов.

Заканчивать - http://code.google.com/p/hb-search-demo/

1

Вы можете попробовать что-то подобное в хранимой процедуре или параметризированного заявлении SQL. Таким образом, вы можете передавать все поля, даже если только некоторые из них имеют значения.

@param1 varchar(25), 
@param2 int, 
@param3 varchar(10), 
@param4 char(1) 

SELECT column1, column2, column3, column4 
FROM TABLE 
WHERE (column1 = @param1 OR @param1 IS NULL) 
AND (column2 = @param2 OR @param2 IS NULL) 
AND (column3 = @param3 OR @param3 IS NULL) 
AND (column4 = @param4 OR @param4 IS NULL) 
Смежные вопросы