Поиск в спящем режиме, Lucene или любая другая альтернатива?

У меня есть запрос, который выполняет ILIKE в некоторых 11 строковых или текстовых полях таблицы, которая невелика (500 000), но для ILIKE явно слишком большая, поисковый запрос занимает около 20 секунд. База данных - postgres 8.4

Мне нужно реализовать этот поиск, чтобы он работал намного быстрее.

Что пришло мне в голову:

  1. Я сделал дополнительный столбец TVECTOR, собранный из всех столбцов, в которых нужно искать, и создал по нему полнотекстовый индекс. Полнотекстовый поиск был довольно быстрым. Но ... я не могу сопоставить этот тип TVECTOR в моем .hbms. Так что эта идея отпала (в любом случае я считаю ее скорее временным решением).

  2. Hibernate search. (Я впервые услышал об этом сегодня) Это кажется многообещающим, но мне нужно опытное мнение по этому поводу, так как я не хочу использовать новый API, возможно, не самый простой, для чего-то, что можно было бы сделать попроще.

  3. Lucene

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

Все советы приветствуются!

Спасибо

10
задан Sanne 16 May 2013 в 22:22
поделиться