Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Поиск по таблице
|
|||
|---|---|---|---|
|
#18+
Уважаемые знатоки Postgresql! Помогите начинающему! У меня есть база данных примерно 2 Гб, 20 полей, в основном текстовые. Пример: id fam name data ................................... 1 Иванов Иван 2 Петров Петр ........................................................................................................................... Какими средствами можно искать в базе по текстовым полям: 1. Полное сравнение fam='Иванов' не подходит 2. Использование через LIKE - долго 3. Я слышал про полнотекстовый поиск в Postgresql, как его организовать. И еще: там, как я понимаю, необходимо при обновлении(добавлении) данных перестраивать индекс - добавлять в него, как это сделать на автомате? Я работал немного с MS SQL и его полнотекстовым поиском, так что сужу на его основе. Как реализовать это в Postgresql и как настроить обновление индексов (для полнотекстового поиска) в Postgresql? Может быть есть еще какие-нибудь способы поиска? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2007, 13:47 |
|
||
|
Поиск по таблице
|
|||
|---|---|---|---|
|
#18+
rkorotovskikh Какими средствами можно искать в базе по текстовым полям: 1. Полное сравнение fam='Иванов' не подходит 2. Использование через LIKE - долго 3. Я слышал про полнотекстовый поиск в Postgresql, как его организовать. И еще: там, как я понимаю, необходимо при обновлении(добавлении) данных перестраивать индекс - добавлять в него, как это сделать на автомате? Я работал немного с MS SQL и его полнотекстовым поиском, так что сужу на его основе. Как реализовать это в Postgresql и как настроить обновление индексов (для полнотекстового поиска) в Postgresql? Может быть есть еще какие-нибудь способы поиска? Че-то я не понял. А искать-то чего нужно? Какие критерии поиска? В PG есть функциональные индексы, которые слегка может использовать LIKE. В PG есть полнотекстовый поиск. Пачитать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2007, 13:54 |
|
||
|
Поиск по таблице
|
|||
|---|---|---|---|
|
#18+
Что нужно искать? Например (fam LIKE '%ива%') and (name LIKE '%ива%') Просто дело в том, что на большой таблице это долго Если знаете - скажите как организовать полнотекстовый поиск с автоматическим обновлением индекса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2007, 14:07 |
|
||
|
Поиск по таблице
|
|||
|---|---|---|---|
|
#18+
rkorotovskikhЧто нужно искать? Например (fam LIKE '%ива%') and (name LIKE '%ива%') Просто дело в том, что на большой таблице это долго Если знаете - скажите как организовать полнотекстовый поиск с автоматическим обновлением индекса? Сам не настраивал. Есть статья, указанная мною в предыдущем посте (учитывая что ее писал отец-создатель детища под названием "полнотекстовый поиск" - то статья достойная). Есть форум и поиск. Кто-то на форуме это дело разворачивал. На сколько понимаю я - то за счет использования GiST индекс будет обновляться автоматически. Но это уже суровое ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2007, 14:36 |
|
||
|
Поиск по таблице
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2007, 15:03 |
|
||
|
Поиск по таблице
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2007, 15:05 |
|
||
|
Поиск по таблице
|
|||
|---|---|---|---|
|
#18+
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 появится возможность организовывать и настраивать полнотекстовый поиск несколькими кликами мышки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2007, 16:01 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34597679&tid=2005357]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 430ms |

| 0 / 0 |
