|
Нечеткий поиск средствами MS SQL 2008 возможен? | ☑ | ||
---|---|---|---|---|
0
arsik
гуру
25.06.15
✎
08:35
|
Может у кого то примеры прямых запросов есть для сабжа?
Нужно прайсы загружать в систему, но прайсы большие. При небольших нормально работает strmatch? Но прайсы большие и каталог номенклатуры тоже большой. Долго получается. |
|||
1
ДенисЧ
25.06.15
✎
08:44
|
дык у него же есть полнотекстовый поиск...
Изучи его |
|||
2
ЧеловекДуши
25.06.15
✎
08:49
|
(0) Оптимизируй. Грузи то что меняется. Разрабатывай механизм слежения за изменениями Цен, прайса и т.д. что бы было легче и быстрее заниматься обменами.
|
|||
3
ЧеловекДуши
25.06.15
✎
08:49
|
(1) Зачем?
|
|||
4
ЧеловекДуши
25.06.15
✎
08:49
|
+(0) Чем чаще осуществляешь обмен, тем быстрее и меньшими порциями подгружаются данные :)
|
|||
5
ЧеловекДуши
25.06.15
✎
08:50
|
+(2) >>> механизм слежения за изменениями Цен, прайса и т.д.
Не значит, что и простые смертные будут чего следить, не делай ставку на пользователя. Так будет проще :) |
|||
6
vde69
25.06.15
✎
08:55
|
(3) за тем, что полнотекстовый поиск работает значительно быстрее (и менее нагружает систему) чем регулярки и Like
|
|||
7
arsik
гуру
25.06.15
✎
08:55
|
(1) Это я в курсе, но у нас он отключен для снижения нагрузки, база достаточно большая и активная.
(2) Это первоначальная загрузка, конечно же следующие разы будет по ИД поставщика все синхронизироваться. |
|||
8
vde69
25.06.15
✎
08:56
|
(0) озвучь размер прайса и номенклатуры? если прайс менее 50к строк - то это не большой прайс :)
|
|||
9
vde69
25.06.15
✎
08:59
|
(0)
задача решается в 4 этапа 1. нормализация структуры 2. деморализация структуры (для быстродействия) 3. загрузка данных в структуру 4. синхронизация с базой судя по всему, ты пытаешься грузить напрямую... |
|||
10
vde69
25.06.15
✎
09:01
|
у меня сейчас крутится база по 4м тендерным площадкам, наполнялась (все тендеры за год) примерно неделю.... весит 40 гигов, полнотекстовый поиск рулит....
|
|||
11
ЧеловекДуши
25.06.15
✎
09:09
|
(9) >>> 2. деморализация структуры (для быстродействия)
Вот этот пункт, я бы выбросил. Зачем с кем то договариваться? Провести параллельный механизм учета изменений и не хай Пользователи варятся в своем учете :) Ну да, БД не много подрастет, но всего лишь немного, на размер Номенклатуры и периодичности изменений Цен :) |
|||
12
ЧеловекДуши
25.06.15
✎
09:10
|
(10) Неплохо. Но сдается мне , что Сервер SQL в (0) нужен для прайсов на каком либо Web сервере :)
|
|||
13
arsik
гуру
25.06.15
✎
09:10
|
(8) Менее конечно. Какая структура то. Сравнить 2 поля - наименование в прайсе и наименование в справочнике. Но сделать это быстро и сразу по всем позициям прайса.
|
|||
14
ДенисЧ
25.06.15
✎
09:10
|
Что-то мне задача знакома...
Не мою ли ты базу подхватил? ))) Не Питер часом? |
|||
15
arsik
гуру
25.06.15
✎
09:11
|
(14) нет
|
|||
16
ЧеловекДуши
25.06.15
✎
09:11
|
(13) Наименование?!! Жесть. может все же ИД, какой прикрутить? :)
|
|||
17
vde69
25.06.15
✎
09:15
|
(13) тогда может все банальнее http://wiki.mista.ru/doku.php?id=1c:v8:howto:algoritm_sravnenija_dvux_tablic_po_tekstovomu_polju
|
|||
18
arsik
гуру
25.06.15
✎
09:20
|
(16) ИД прикрутится, после первоначальной загрузки.
|
|||
19
arsik
гуру
25.06.15
✎
09:22
|
(17) наименования же не 1 в 1. Для этого нечеткий поиск и нужен. Что бы оператору руками было проще идентифицировать.
|
|||
20
vde69
25.06.15
✎
09:27
|
дарю :) только перед поиском нужно проиндексировать
Функция ПолучитьСтрокиДляПоиска(РазделАнализа) Результат = Новый Массив; ПределСтроки = 250; Стр = СокрЛП(РазделАнализа.Наименование); Для Каждого эл из РазделАнализа.КлючиПоиска Цикл Стр2 = Стр + " OR " + эл.Ключ + " "; Если СтрДлина(Стр2) > ПределСтроки Тогда Результат.Добавить(Стр); Стр = эл.Ключ; Иначе Стр = Стр2; КонецЕсли; КонецЦикла; Результат.Добавить(Стр); Возврат Результат; КонецФункции Функция НайтиЛоты (РазделАнализа, ОбластьПоиска) Экспорт Результат = Новый Массив; Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска() <> РежимПолнотекстовогоПоиска.Разрешить Тогда Возврат Результат; КонецЕсли; СтрокиПоиска = ПолучитьСтрокиДляПоиска(РазделАнализа); //УстановитьПривилегированныйРежим(Истина); //ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска(РежимПолнотекстовогоПоиска.Разрешить); //УстановитьПривилегированныйРежим(Ложь); Для Каждого Стр из СтрокиПоиска Цикл Список = ПолнотекстовыйПоиск.СоздатьСписок(стр, 100); Список.ОбластьПоиска.Добавить(Метаданные.РегистрыСведений.Лоты); Список.ПерваяЧасть(); Для Каждого эл из Список Цикл Результат.Добавить(эл.Значение); КонецЦикла; Пока (Список.ПолноеКоличество() - Список.НачальнаяПозиция()) > Список.Количество() Цикл Список.СледующаяЧасть(); Для Каждого эл из Список Цикл Результат.Добавить(эл.Значение); КонецЦикла; КонецЦикла; КонецЦикла; Возврат Результат; КонецФункции |
|||
21
arsik
гуру
25.06.15
✎
09:44
|
(20) Не включен у нас полнотекстовый поиск, да и платформа 8.1
|
|||
22
vde69
25.06.15
✎
09:48
|
(21) это Ваши проблемы, Вы спросили как сделать - я ответил...
не вижу причин сидеть на древней платформе вместо перехода на стабильную 8.3.5 и включение полнотекстового поиска |
|||
23
arsik
гуру
25.06.15
✎
09:55
|
(22) Ты ведь понимаешь, что чуш говоришь, не зная всей подноготной?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |