Как искать слова в нескольких таблицах - PullRequest
0 голосов
/ 07 октября 2011

Я сделал веб-приложение с несколькими таблицами. Теперь я хочу искать в этих таблицах. В настоящее время я успешно создал класс, который инкапсулирует запросы для каждой таблицы, такие как getAllPersonsByFirstName ... и так далее. И тогда пользователь может выбрать из флажков, какие таблицы он / она хочет включить в поиск. Если выбрано несколько таблиц, я отправляю строку (полученную из поля ввода) каждому методу, затем объединяю результаты в коллекцию Set.

Однако, как мне кажется, это имеет ограниченное применение, потому что если я захочу разбить результаты на страницы (5,10100 на каждой странице), у меня будут проблемы с определением количества строк, которым я должен ограничить поиск. Я использую JPA, поэтому я знаю, что могу установить смещение и максимум, но при наличии нескольких таблиц я не вижу, как это будет работать.

Итак, я подумал о том, чтобы сделать один большой окончательный запрос, который отправляется в базу данных, с использованием меньших методов, но я не уверен, что это путь. По крайней мере смещение-максимум в JPA будет работать.

Вероятно, есть лучшие способы сделать это, поэтому я хотел бы оценить некоторую помощь в том, как добиться поддержки нумерации страниц. (Использование JPA, EJB, JSF и результат привязки к датированному)

Ответы [ 2 ]

0 голосов
/ 08 октября 2011

Поскольку вы используете EclipseLink, я рекомендую вам изучить их Expression Framework .

Позволяет выполнять программные запросы очень разумным образом.

ExpressionBuilder emp = new ExpressionBuilder();
Expression exp = emp.get("address").get("street").equal("Meadowlands");
Vector employees = session.readAllObjects(Employee.class,
               exp.and(emp.get("salary").greaterThan(10000)));

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

0 голосов
/ 07 октября 2011

вот некоторые подсказки http://forums.mysql.com/read.php?107,36833,36833 если база данных mysql.

вы можете использовать Sphinx, если у вас огромное количество данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...