|
Динамический поиск элемента справочника по нескольким полям | ☑ | ||
---|---|---|---|---|
0
kenshin
11.11.11
✎
11:12
|
Здравствуйте уважаемые Мистяне.
Один директор (в прошлом заядлый айтишник) захотел сделать обработку, в котором будет организован динамический поиск по справочнику (как, например, в гугле). Есть ли у кого-либо подобные наработки или алгоритмы? |
|||
1
kenshin
11.11.11
✎
11:23
|
up
|
|||
2
Ненавижу 1С
гуру
11.11.11
✎
11:24
|
я не против
|
|||
3
kenshin
11.11.11
✎
11:57
|
(2) не против чего?
|
|||
4
Ненавижу 1С
гуру
11.11.11
✎
12:02
|
(3) такой обработки
|
|||
5
kenshin
11.11.11
✎
12:07
|
(4) А идеи? :)
Алгоритм, который у меня возник в голове довольно простой: 1) Разбиваем строку на слова 2) Ищем каждое слово в каждом из полей поиска 3) Результаты выводим Все это выполнять при изменении строки. НО Постоянно формировать запрос к базе... думаю, очень медленно и не рационально будет работать... |
|||
6
kenshin
11.11.11
✎
12:08
|
+(5) Мне бы хотелось просто получить подсказку алгоритма, кто занимался такими вещами...
|
|||
7
Axel2009
11.11.11
✎
12:11
|
полнотекстовый поиск не предлагать?
|
|||
8
Maxus43
11.11.11
✎
12:12
|
давно придуманы такие велокаты, причем самой 1с
|
|||
9
kenshin
11.11.11
✎
12:12
|
(7) всмысле? поясните, пожалуйста....
|
|||
10
Maxus43
11.11.11
✎
12:13
|
(9) 1с даже синонимы умеет искать
|
|||
11
kenshin
11.11.11
✎
12:13
|
(8) подскажите, пожалуйста, где в 1с реализован такой механизм?
|
|||
12
Maxus43
11.11.11
✎
12:13
|
(11) > (7)
|
|||
13
kenshin
11.11.11
✎
12:14
|
(12) ну так что такое "полнотекстовый поиск"? Видимо туплю...
|
|||
14
Maxus43
11.11.11
✎
12:17
|
будем постить СП, чтоб пнуть в нужном напрвавлении:
МенеджерПолнотекстовогоПоиска.СоздатьСписок (FullTextSearchManager.CreateList) МенеджерПолнотекстовогоПоиска (FullTextSearchManager) СоздатьСписок (CreateList) Синтаксис: СоздатьСписок(<СтрокаПоиска>, <РазмерПорции>) Параметры: <СтрокаПоиска> (необязательный) Тип: Строка. Строка для поиска в реквизитах данных (содержит как слова, которые нужно найти, так и поисковые операторы - И, ИЛИ, НЕ, РЯДОМ, скобки, кавычки). Поиск может осуществляться по нескольким словам, с использованием поисковых операторов и поиском по точной фразе. В строке ввода допускается использование следующих поисковых операторов: И (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
kenshin
11.11.11
✎
12:19
|
(14) большое спасибо.
Просто не слышал про такой механизм. Буду знать. Еще раз спасибо. |
|||
16
Maxus43
11.11.11
✎
12:20
|
(15) книжку по нему почитай, там чтоб его запустить надо много чего сделать, индексы сформировать например, что долго. рег задания всякие и т.д. читаем короче
|
|||
17
kenshin
11.11.11
✎
12:21
|
(16)
По крайней мере я понял, куда рыть. Спасибо, буду учиться |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |