Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Поиск по таблице / 7 сообщений из 7, страница 1 из 1
15.06.2007, 13:47
    #34597640
rkorotovskikh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по таблице
Уважаемые знатоки Postgresql! Помогите начинающему!
У меня есть база данных примерно 2 Гб, 20 полей, в основном текстовые.
Пример:
id fam name data ...................................
1 Иванов Иван
2 Петров Петр
...........................................................................................................................
Какими средствами можно искать в базе по текстовым полям:
1. Полное сравнение fam='Иванов' не подходит
2. Использование через LIKE - долго
3. Я слышал про полнотекстовый поиск в Postgresql, как его организовать. И еще: там, как я понимаю, необходимо при обновлении(добавлении) данных перестраивать индекс - добавлять в него, как это сделать на автомате? Я работал немного с MS SQL и его полнотекстовым поиском, так что сужу на его основе. Как реализовать это в Postgresql и как настроить обновление индексов (для полнотекстового поиска) в Postgresql?

Может быть есть еще какие-нибудь способы поиска?
...
Рейтинг: 0 / 0
15.06.2007, 13:54
    #34597679
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по таблице
rkorotovskikh
Какими средствами можно искать в базе по текстовым полям:
1. Полное сравнение fam='Иванов' не подходит
2. Использование через LIKE - долго
3. Я слышал про полнотекстовый поиск в Postgresql, как его организовать. И еще: там, как я понимаю, необходимо при обновлении(добавлении) данных перестраивать индекс - добавлять в него, как это сделать на автомате? Я работал немного с MS SQL и его полнотекстовым поиском, так что сужу на его основе. Как реализовать это в Postgresql и как настроить обновление индексов (для полнотекстового поиска) в Postgresql?

Может быть есть еще какие-нибудь способы поиска?
Че-то я не понял. А искать-то чего нужно? Какие критерии поиска?
В PG есть функциональные индексы, которые слегка может использовать LIKE.
В PG есть полнотекстовый поиск.
Пачитать.
...
Рейтинг: 0 / 0
15.06.2007, 14:07
    #34597759
rkorotovskikh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по таблице
Что нужно искать?
Например (fam LIKE '%ива%') and (name LIKE '%ива%')

Просто дело в том, что на большой таблице это долго
Если знаете - скажите как организовать полнотекстовый поиск с автоматическим обновлением индекса?
...
Рейтинг: 0 / 0
15.06.2007, 14:36
    #34597892
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по таблице
rkorotovskikhЧто нужно искать?
Например (fam LIKE '%ива%') and (name LIKE '%ива%')

Просто дело в том, что на большой таблице это долго
Если знаете - скажите как организовать полнотекстовый поиск с автоматическим обновлением индекса?
Сам не настраивал.
Есть статья, указанная мною в предыдущем посте (учитывая что ее писал отец-создатель детища под названием "полнотекстовый поиск" - то статья достойная). Есть форум и поиск. Кто-то на форуме это дело разворачивал.
На сколько понимаю я - то за счет использования GiST индекс будет обновляться автоматически. Но это уже суровое ИМХО.
...
Рейтинг: 0 / 0
15.06.2007, 15:03
    #34598033
СергейК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по таблице
Andrey Daeron rkorotovskikhЧто нужно искать?
Например (fam LIKE '%ива%') and (name LIKE '%ива%')

Просто дело в том, что на большой таблице это долго
Если знаете - скажите как организовать полнотекстовый поиск с автоматическим обновлением индекса?
Сам не настраивал.
Есть статья, указанная мною в предыдущем посте (учитывая что ее писал отец-создатель детища под названием "полнотекстовый поиск" - то статья достойная). Есть форум и поиск. Кто-то на форуме это дело разворачивал.
На сколько понимаю я - то за счет использования GiST индекс будет обновляться автоматически. Но это уже суровое ИМХО.

Smotret' suda:
Postgres'ovyy Fulltext poisk nazyvaetsia tsearch2 i lejit v contrib'ah:
Pochitat' pro nego mojno zdes':
http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/

Nachinaia s versii 8.3 Tsearch2 budet vstroen V PG.

PS I estestvenno indexy obnovliautsia avtomaticheski
...
Рейтинг: 0 / 0
15.06.2007, 15:05
    #34598042
СергейК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по таблице
Sorry, zabyl skazat'.
Prosto ssylka dannaia Andrey Daeron goditsia tolko dlia PG 8.3+ , kotoryy eshe ne vyshel.
A ssylka, kotoruiu ia dal goditsia dlia tekushih versii PG.
...
Рейтинг: 0 / 0
16.06.2007, 16:01
    #34599660
iz
iz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по таблице
rkorotovskikh
3. Я слышал про полнотекстовый поиск в Postgresql, как его организовать. И еще: там, как я понимаю, необходимо при обновлении(добавлении) данных перестраивать индекс - добавлять в него, как это сделать на автомате? Я работал немного с MS SQL и его полнотекстовым поиском, так что сужу на его основе. Как реализовать это в Postgresql и как настроить обновление индексов (для полнотекстового поиска) в Postgresql?


Суть использования tsearch2 проста. В таблице, по которой необходимо искать, делается специальная колонка с типом tsvector (назовем ее obj_tsvector), на которую навешивается либо GiST, либо GiN индекс. При изменениях в obj_tsvector, разумеется, индекс перестраивается самостоятельно. Но синхронизировать ваши текстовые данные и содержимое obj_tsvector нужно самостоятельно -- для этой цели всего лишь нужно создать триггер, который по любым изменениям текстовых данных будет обновлять obj_tsvector, делая апдейт вроде UPDATE ... SET obj_tsvector = to_tsvector('configuration_name', 'text_column_name').

То есть, все что нужно сделать в таблице:

1. Добавить колонку типа tsvector
2. Создать индекс по колонке типа tsvector
3. Создать триггер на таблице, который будет поддерживать актуальность ваших данных и tsvector-а по ним.

В 8.3 будет обертка для создания триггера и его тело даже не придется писать руками. Также в ближайшем будущем в phpPgAdmin появится возможность организовывать и настраивать полнотекстовый поиск несколькими кликами мышки.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Поиск по таблице / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]