Имя: Пароль:
1C
1С v8
Нужен совет по использованию полнотекстового поиска.
0 tciban
 
28.07.16
11:02
Уважаемые коллеги! Вопрос такой: беру из одной базы номенклатуру с наименованием например "Контроллер 8Gb FC 4 Port Host Interface Card".
В другой базе этот товар имеет наименование "8Gb FC 4 Port Host Interface Card".

При попытке найти во второй базе полнотекстовым поиском с порогом нечеткости 50 ничего не нашло. Вероятно потому, что первое наименование больше - к нему добавлено слово "Контроллер". И как же быть? Вроде очевидно, что это одно и то же наименование, но как реализовать поиск?

Идею откусывать первое слов предлагаю не обсуждать, она очевидна. Но слово может бытьи в конце и в середине или их будет два. Если я правильно понимаю проблема в том, что искомая фраза длинее.
1 vde69
 
28.07.16
11:05
а полнотекстовый поиск настроен?

должны соблюдатся условия

1. поля поиска - иметь соотв. галки
2. индексы поиска должны регламентом обновлятся и перестраиватся
2 tciban
 
28.07.16
11:06
Ну конечно настроен. И галки стоят и обновление индексов по расписанию. Я все тупенько из БСП взял :)
3 tciban
 
28.07.16
11:07
И галки вдумчиво раставлял, когда объекты делал
4 tciban
 
28.07.16
11:07
А что, оно все же должно находить большую фразу при поиске по меньшим?
5 vde69
 
28.07.16
11:09
значит не сильно "вдумчево", полнотекстовый прекрасно будет искать сабж.... только имей в виду там есть свой синтаксис который стоит почитать...
6 DES
 
28.07.16
11:17
полнотекстовый поиск работает в толстом клиенте ?
7 tciban
 
28.07.16
11:18
Т.е. искать должен, только я делаю что-то не так? Ну я то по простому искал, может в этом дело? Вот код поиска:
    СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок();
    СписокПоиска.СтрокаПоиска = Наименование;
    СписокПоиска.РазмерПорции = 3;
    СписокПоиска.ПолучатьОписание = Истина;
    СписокПоиска.ПорогНечеткости  = 50;
8 tciban
 
28.07.16
11:18
СписокПоиска.ПерваяЧасть();
Для К=0 По СписокПоиска.Количество()-1 Цикл
    Зн = СписокПоиска.Получить(К);
КонецЦикла;
9 tciban
 
28.07.16
11:19
Результат выполнения - СписокПоиска.Количество()=0. :(
10 tciban
 
28.07.16
11:21
Полнотекстовый поиск выполняется на сервере, т.к. процедура предназначена для регламентного задания. Конфа на УФна основе БСП 2.3.3.66, движок последнгего релиза. Отлажживаю в файловой версии, а вообще то база крутится под убунту на Postgre
11 vde69
 
28.07.16
11:38
Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска() <> РежимПолнотекстовогоПоиска.Разрешить Тогда
        Возврат Результат;
    КонецЕсли;

    СтрокиПоиска = ПолучитьСтрокиДляПоиска(РазделАнализа);
    //УстановитьПривилегированныйРежим(Истина);
    //ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска(РежимПолнотекстовогоПоиска.Разрешить);
    //УстановитьПривилегированныйРежим(Ложь);
    
    Для Каждого Стр из СтрокиПоиска Цикл
        Список = ПолнотекстовыйПоиск.СоздатьСписок(стр, 100);
        Список.ОбластьПоиска.Добавить(Метаданные.РегистрыСведений.Лоты);
        Список.ПерваяЧасть();

        Для Каждого эл из Список Цикл
            Результат.Добавить(эл.Значение);
        КонецЦикла;
        
        Пока (Список.ПолноеКоличество() - Список.НачальнаяПозиция()) > Список.Количество() Цикл
            Список.СледующаяЧасть();
            Для Каждого эл из Список Цикл
                Результат.Добавить(эл.Значение);
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
12 tciban
 
28.07.16
14:57
(11) Таки что вы хотели этим сказать?
13 vde69
 
28.07.16
15:09
(12) первую строчку посмотри....
14 tciban
 
28.07.16
15:27
А остальное зачем?
15 tciban
 
28.07.16
15:29
И да, у меня включено. совпадающие строки находит. Так что это тут не при чем. :(
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший