Автор | Сообщение |
|
| |
Пост N: 163
Зарегистрирован: 07.08.06
|
|
Отправлено: 12.06.13 15:26. Заголовок: ADS FTS: кто-нить юзает ? странное время выборки...
Всем привет. Создал я, значит, FTS для таблицы клиентов (на clipper'e этого не сделать, пришлось через JDBC ваять). И вот вижу: для некоторых (немногих) клиентов время выборки какое-то нереальное. Первую запись типа "ПАВЕЛ ВЕРЕС" находит быстро, но дальше - капец, ждать надо минуту-две, а то и три. Строки ввожу достаточной длины и в них нет "шумовых" слов. В таблице более 500 тыс строк. Где-то можно почитать про эти особенности FTS'a ? (доку читал, там нет объяснений этому эффекту) PS. Большинство же записей ищется очень быстро, менее 5 сек
|
|
|
Ответов - 6
[только новые]
|
|
|
| |
Пост N: 164
Зарегистрирован: 07.08.06
|
|
Отправлено: 12.06.13 16:18. Заголовок: Поигрался еще с ним...
Поигрался еще с ним. Есть подозрение, что ему "тошно" от строк поиска, в которых одно из искомых слов встречается в таблице реже редкого (1-2 раза). Например, если в таблице записано наименование покупателя: "ДЖАБЕР НАИФ ОГЛЫ" и поиск идёт по вхождению каждого из слов: *НАИФ* and *ДЖАБ" (или так: *ДЖАБ* and *НАИФ" - неважно), то FTS будет молотить... 86 сек. Ужоснах... :-/
|
|
|
|
| |
Пост N: 3225
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.06.13 16:25. Заголовок: SX_WILDSEEK поюзай ;..
SX_WILDSEEK поюзай ;)
|
|
|
|
| |
Пост N: 165
Зарегистрирован: 07.08.06
|
|
Отправлено: 12.06.13 16:30. Заголовок: Дык юзал, когда у мн..
Дык юзал, когда у мну не было ADS'a. Но допустим, я буду открывать на чтение эту таблицу в другом алиасе. Он же (sx_wild) будет через клиента прогонять все строки индекса, так ?
|
|
|
|
| |
Пост N: 3226
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.06.13 16:31. Заголовок: Пробовать надо ..
Пробовать надо
|
|
|
|
| |
Пост N: 166
Зарегистрирован: 07.08.06
|
|
Отправлено: 12.06.13 18:13. Заголовок: у мну есть еще один ..
у мну есть еще один вариант: создать на АДС-сервере таблицу со структурой типа {source_name c 50, word c 30, key c 8}, в которую вгонять наименования клиентов таким вот способом: source_name | word | key --------------------------------------------------------------- ИВАНОВ АБРАМ МОИСЕЕВИЧ | ИВАНОВ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | ВАНОВ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | АНОВ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | НОВ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | ОВ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | АБРАМ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | БРАМ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | РАМ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | АМ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | МОИСЕЕВИЧ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | ОИСЕЕВИЧ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | ИСЕЕВИЧ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | СЕЕВИЧ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | ЕЕВИЧ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | ЕВИЧ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | ВИЧ | 01364187 ИВАНОВ АБРАМ МОИСЕЕВИЧ | ИЧ | 01364187 Дальше проиндексировать по word и при вводе строки поиска, состоящей из нескольких слов, оценивать для каждого слова значение ax_getaofrecordcount(). Затем делать aof-фильтр с optlevel=1 по тому слову, у которого наименьшее кол-во строк, а остальные слова из фразы поиска цеплять уже по условию вхождения в name (т.е. по "$"). Буду пробовать, отпишусь тогда.
|
|
|
|
| |
Пост N: 167
Зарегистрирован: 07.08.06
|
|
Отправлено: 13.06.13 14:33. Заголовок: p519446 пишет: у мну..
p519446 пишет: цитата: | у мну есть еще один вариант |
|
в общем, сравнил я эти варианты. И вот что спешу доложить: скорость "колхозного" варианта, когда все возможные начала строк пишутся в отдельные записи (как с "Ивановым Абрамом Моисеевичем") - просто космическая по сравнению с ADS FTS :-) Превышение от 1.5 до 50(!) раз. Так что буду юзать свою схему. Хоть и выглядит ужасающе, но работает же! :-)
|
|
|
|