Имя: Пароль:
1C
1С v8
Нечеткий поиск средствами 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
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) Ты ведь понимаешь, что чуш говоришь, не зная всей подноготной?