Динамический поиск элемента справочника по нескольким полям #579458


#0 by kenshin
Здравствуйте уважаемые Мистяне. Один директор (в прошлом заядлый айтишник) захотел сделать обработку, в котором будет организован динамический поиск по справочнику (как, например, в гугле). Есть ли у кого-либо подобные наработки или алгоритмы?
#1 by kenshin
up
#2 by Ненавижу 1С
я не против
#3 by kenshin
не против чего?
#4 by Ненавижу 1С
такой обработки
#5 by kenshin
А идеи? :) Алгоритм, который у меня возник в голове довольно простой: 1) Разбиваем строку на слова 2) Ищем каждое слово в каждом из полей поиска 3) Результаты выводим Все это выполнять при изменении строки. НО Постоянно формировать запрос к базе... думаю, очень медленно и не рационально будет работать...
#6 by kenshin
+ Мне бы хотелось просто получить подсказку алгоритма, кто занимался такими вещами...
#7 by Axel2009
полнотекстовый поиск не предлагать?
#8 by Maxus43
давно придуманы такие велокаты, причем самой 1с
#9 by kenshin
всмысле? поясните, пожалуйста....
#10 by Maxus43
1с даже синонимы умеет искать
#11 by kenshin
подскажите, пожалуйста, где в 1с реализован такой механизм?
#12 by Maxus43
>
#13 by kenshin
ну так что такое "полнотекстовый поиск"? Видимо туплю...
#14 by Maxus43
будем постить СП, чтоб пнуть в нужном напрвавлении: Синтаксис: СоздатьСписок(<СтрокаПоиска>, <РазмерПорции>) Параметры: Тип: Строка. Строка для поиска в реквизитах данных (содержит как слова, которые нужно найти, так и поисковые операторы - И, ИЛИ, НЕ, РЯДОМ, скобки, кавычки). Поиск может осуществляться по нескольким словам, с использованием поисковых операторов и поиском по точной фразе. В строке ввода допускается использование следующих поисковых операторов: И (AND или #) - поиск данных, содержащих все слова; пример: "запись И документ" - в реквизитах должны быть и "проведение" и "документ" (с учетом морфологии); ИЛИ (OR или | или ,) - поиск хотя бы одного слова из перечисленных; пример: "запись ИЛИ документ" - в реквизитах должно быть хотя бы одно из слов "запись" или "документ"; НЕ (NOT или ~) - поиск данных, в реквизитах которых есть первое слово, но нет второго; пример: "закрытие НЕ месяц" - будут найдены все, содержащие "закрытие", но не содержащие слова "месяц". Использование "~" в начале строки не допускается; РЯДОМ/n (NEAR/[+/-]n) - поиск данных, содержащих в одном реквизите указанные слова с учетом морфологии на расстоянии n слов между словами. Знак указывает, в каком направлении от первого слова будет искаться второе слово ("+" – после первого; "-" – до первого слова). Если знак не указан, то будет найдены данные, содержащие указанные слова на дистанции n слов друг о друга. Порядок слов не имеет значения. "фен РЯДОМ/3 воздух" - будут найдены данные, в которых "воздух" находится не более 3-х слов до или после "фен"; фен РЯДОМ/+3 воздух - будут найдены данные, в которых "воздух" находится не более 3-х слов после "фен"; фен РЯДОМ/-3 воздух - будут найдены данные, в которых "воздух" находится не более 3-х слов перед "фен". РЯДОМ(NEAR) - упрощенный оператор дистанции: оба слова расположены не далее, чем в 8-ми словах друг от друга; пример: "проведение РЯДОМ документ"; "" (текст в кавычках) - поиск точной с учетом морфологии фразы , пример: "проведение документа" - эквивалентно: проведение /1 документа; - группировка слов (сколько угодно уровней вложенности); пример: "(проведение | выписка) # (счета, документа)"; * - поиск с использованием группового символа (замена окончания слова). Должно быть введено более 1 значащего символа; пример: "доку*" - найдет "документ", "документировать", "документальный" и др.; # - нечеткий поиск слов с заданным количеством отличий от указанного (если не указано, то = 1); пример: запрос "#Система" найдет "систама", "сивтема"; запрос "Система#2" найдет "ситтама", "сеттема"; ! - поиск с учетом синонимов русского, английского и украинского языков. "!" ставится перед соответствующим словом; пример: поиск "!красный кафель", найдет еще и "алый кафель" и "коралловый кафель". Если не указано никаких операторов (слова набраны через пробел), то программа осуществляет поиск всех слов из запроса с использованием оператора И. Замечание 1. Написание операторов И (AND), ИЛИ (OR), НЕ (NOT), РЯДОМ (NEAR) допускается только в верхнем регистре. Замечание 2. Операторы не используются как унарные (в начале строки поиска). Например, нельзя сделать выбор всех глав, в которых отсутствует указанный текст. Ограничение. При использовании нечеткого и группового поиска (операторы "*" и "#") может быть найдено несколько слов. Общее число найденных слов не может превышать 300. Тип: Число. Количество результатов в одной порции. Например, 30. Значение по умолчанию: 20 Возвращаемое значение: Тип: СписокПолнотекстовогоПоиска. Описание: Создает объект СписокПолнотекстовогоПоиска. После создания необходимо вызвать метод ПерваяЧасть - чтобы получить результаты поиска. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Если режим полнотекстового поиска запрещен, то использование метода вызывает исключение
#15 by kenshin
большое спасибо. Просто не слышал про такой механизм. Буду знать. Еще раз спасибо.
#16 by Maxus43
книжку по нему почитай, там чтоб его запустить надо много чего сделать, индексы сформировать например, что долго. рег задания всякие и т.д. читаем короче
#17 by kenshin
По крайней мере я понял, куда рыть. Спасибо, буду учиться
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С