|
Не получается сделать полнотекстовый поиск по середине слова. | ☑ | ||
---|---|---|---|---|
0
Romeooo
12.04.13
✎
08:19
|
Всем привет! Помогите, пожалуйста, разобраться с полнотекстовым поиском. Не хочет искать по середине строки. Например, у клиента номер телефона 06702338934, и мне нужно, что бы он находился, например, по куску строки "233".
п.с.Предыдущую тему случайно отправил) |
|||
1
Волшебник
12.04.13
✎
08:19
|
ГДЕ Телефон ПОДОБНО "%233%"
|
|||
2
Romeooo
12.04.13
✎
08:19
|
Если точнее, то он ищет по "233", но только после того, как выполнить поиск по началу строки, например по "06702"
|
|||
3
Romeooo
12.04.13
✎
08:20
|
(1)Так это ж не в запросе, а в стандартном полнотекстовом поиске. Или там тоже можно куски запроса использовать?
|
|||
4
Jonny_Khomich
12.04.13
✎
08:22
|
(3) есть же такая функция в 1с, СРЕД называется
|
|||
5
Romeooo
12.04.13
✎
08:23
|
(4) Не понял. Можете поподробней?
|
|||
6
Wobland
12.04.13
✎
08:23
|
(4) бесспорно, с помощью Сред() можно искать подстроку в строке. и это, пожалуй, наиболее красивый и удобный метод
|
|||
7
Jonny_Khomich
12.04.13
✎
08:25
|
(6) я других просто не увидел)))
|
|||
8
Romeooo
12.04.13
✎
08:25
|
Код обработки поиска:
Процедура ПоискНужного(ВКакуюСторонуИскать) Если ПустаяСтрока(СтрПоиска) Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не заполнена строка поиска!"; Сообщение.Сообщить(); Возврат; КонецЕсли; _СтрПоиска = СтрПоиска; Если ИскатьНаВхождение И Прав(СтрПоиска,1)<>"*" Тогда _СтрПоиска = СтрПоиска+"*"; КонецЕсли; СписокПолнотекстовогоПоиска = ПолнотекстовыйПоиск.СоздатьСписок(_СтрПоиска,10); ОтборОбластиПоиска = Новый Массив; ОтборОбластиПоиска.Добавить(Метаданные.Справочники.Номенклатура); ОтборОбластиПоиска.Добавить(Метаданные.Справочники.Контрагенты); СписокПолнотекстовогоПоиска.ОбластьПоиска = ОтборОбластиПоиска; Если ВКакуюСторонуИскать="ПерваяЧасть" Тогда СписокПолнотекстовогоПоиска.ПерваяЧасть(); ИначеЕсли ВКакуюСторонуИскать="ПредыдущаяЧасть" Тогда СписокПолнотекстовогоПоиска.ПредыдущаяЧасть(Указатель); ИначеЕсли ВКакуюСторонуИскать="СледующаяЧасть" Тогда СписокПолнотекстовогоПоиска.СледующаяЧасть(Указатель); КонецЕсли; КоличествоНайденныхЭлементов = СписокПолнотекстовогоПоиска.ПолноеКоличество(); Указатель = СписокПолнотекстовогоПоиска.НачальнаяПозиция(); СписокВсегоЧтоНашлось.Очистить(); Для Каждого Ф Из СписокПолнотекстовогоПоиска Цикл СписокВсегоЧтоНашлось.Добавить(Ф.Значение); КонецЦикла; ВсеЧтоНашлось = СписокПолнотекстовогоПоиска.ПолучитьОтображение(ВидОтображенияПолнотекстовогоПоиска.HTMLТекст); Если (КоличествоНайденныхЭлементов-Указатель)>10 Тогда Элементы.Вперед.Доступность = Истина; Иначе Элементы.Вперед.Доступность = ЛОжь; КонецЕсли; Если Указатель>0 Тогда Элементы.Назад.Доступность = Истина; Иначе Элементы.Назад.Доступность = Ложь; КонецЕсли; ТекстВсегоРезультатов = "Показано "+СписокПолнотекстовогоПоиска.Количество()+" из "+КоличествоНайденныхЭлементов; ОбновитьТекстАктуальностиПоиска(); КонецПроцедуры |
|||
9
НЕА123
12.04.13
✎
08:25
|
*233*
|
|||
10
Romeooo
12.04.13
✎
08:26
|
(9) так не ищет
|
|||
11
Jonny_Khomich
12.04.13
✎
08:27
|
Ребятки, вы зачем так делаете то??? ЧИТАЙТЕ СП!!! Не просто так она встроена в конфигуратор 1с!
Сред (Mid) Синтаксис: Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) Параметры: <Строка> (обязательный) Тип: Строка. Исходная строка. <НачальныйНомер> (обязательный) Тип: Число. Начальный номер символа, с которого начинается выборка. Нумерация символов в строке начинается с 1. Если указано значение, меньшее или равное нулю, то параметр принимает значение 1. <ЧислоСимволов> (необязательный) Тип: Число. Количество выбираемых символов. Если параметр не указан, то выбираются символы до конца строки. Возвращаемое значение: Тип: Строка. Строка выбранных символов. Описание: Выбирает строку символов, начиная с символа <НачальныйНомер>, общим количеством <ЧислоСимволов>. |
|||
12
Romeooo
12.04.13
✎
08:27
|
(6),(4) куда можно приткнуть СРЕД в (8)??
|
|||
13
Живой Ископаемый
12.04.13
✎
08:28
|
2(11) и как это помогает в решении проблемы (0)?
|
|||
14
Godofsin
12.04.13
✎
08:28
|
(11) Жгешь, товарищ!
|
|||
15
Wobland
12.04.13
✎
08:29
|
(12) забудь про сред
|
|||
16
Romeooo
12.04.13
✎
08:29
|
(12)он, наверное, шутит...ха-ха...
|
|||
17
Romeooo
12.04.13
✎
08:29
|
(16)to(13)
|
|||
18
Jonny_Khomich
12.04.13
✎
08:30
|
(14) (13) ребята, я реально лохонулся)))
|
|||
19
Godofsin
12.04.13
✎
08:31
|
Если СтрЧислоВхождений(СТрока,Подстрока)>0 тогда...
|
|||
20
Wobland
12.04.13
✎
08:31
|
(18) иди в пятницу и расскажи всем ;)
|
|||
21
Godofsin
12.04.13
✎
08:31
|
(20) )))))))))))
|
|||
22
Romeooo
12.04.13
✎
08:32
|
(19)опять же, причем это к полнотекстовому поиску?
|
|||
23
Jonny_Khomich
12.04.13
✎
08:32
|
(20) я уже на 73,4% в пятнице)
|
|||
24
Godofsin
12.04.13
✎
08:34
|
(22) так я просто не отстаю от всех хню всякую постить))) про полнотекстовый - это я упустил
|
|||
25
Romeooo
12.04.13
✎
08:34
|
(24):)
|
|||
26
Romeooo
12.04.13
✎
08:39
|
Могу скинуть саму обработку, но толку...
|
|||
27
НЕА123
12.04.13
✎
08:40
|
(0)
хз. но в БСП прекрано находит по 233* |
|||
28
НЕА123
12.04.13
✎
08:40
|
*прекрасно
|
|||
29
Romeooo
12.04.13
✎
08:42
|
(28)и 233 в середине слова?
|
|||
30
НЕА123
12.04.13
✎
08:46
|
(29) да.
|
|||
31
Romeooo
12.04.13
✎
08:50
|
В БСП добавил в организацию телефон "06734567890".
Обновил индекс. В поиске пишу 567* Ничего не находит. |
|||
32
Xsander
12.04.13
✎
08:50
|
Если пример(с телефонным номером) правильно привел, то в переборе можно так(как в запросе, уже написали выше),-
Найти(ТекстГдеИщем, ТекстКоторыйИщем)>0 Таким образом очень много буйдет найдено, если номеров много в базе забито и если у Вас к примеру мало символов для поиска У меня стоит похожая задача, - ограничить часть справочника номенклатура, позициями, названия которых установленны нормативными документами, а другая часть произвольными наименованиями. И с другой стороны сделать поиск с пониманием ошибок клиента или менеджера, если наименования отдоленно с учетом ошибок напоминает наименования из нормативных документов., иными словами распознование текста. |
|||
33
Godofsin
12.04.13
✎
08:51
|
(32) еще один )))
|
|||
34
Romeooo
12.04.13
✎
08:51
|
(32) Вы немного не по теме.
|
|||
35
Romeooo
12.04.13
✎
08:52
|
(30),(31) а когда ищу по 067*, то все наход, а потом и по 567* без проблем
|
|||
36
НЕА123
12.04.13
✎
08:55
|
(31)
поиск лог* нашел ООО "Новые технологии" а с числами почему-то не так... |
|||
37
НЕА123
12.04.13
✎
08:56
|
(36)+
непонятно. вообще непонятно. |
|||
38
Romeooo
12.04.13
✎
08:57
|
(37) попробывал по *ект, ЗАО "Перспектива" не находит)
|
|||
39
Romeooo
12.04.13
✎
08:58
|
+(38), как в (36) тоже не хочет находить
|
|||
40
Romeooo
12.04.13
✎
08:59
|
находит, только после того, если слово уже было найдено раньше поиском по другой подстроке
|
|||
41
НЕА123
12.04.13
✎
09:00
|
(38)
да. как же оно работает? |
|||
42
Romeooo
12.04.13
✎
09:01
|
Похоже придется перебирать метаданные нужных справочников, да динамически формировать запрос с полями: ссылка, синоним реквизита, значение реквизита и выполнять поиск через подобно по значению реквизита...
|
|||
43
Romeooo
12.04.13
✎
09:01
|
(41)ректально...
|
|||
44
Romeooo
12.04.13
✎
09:01
|
)))
|
|||
45
Romeooo
12.04.13
✎
10:00
|
up
|
|||
46
Romeooo
12.04.13
✎
12:33
|
ну что? нет никаких вариантов?
|
|||
47
hhhh
12.04.13
✎
12:53
|
(46) а обновление индексов полнотекстового поиска делали?
|
|||
48
Romeooo
12.04.13
✎
16:42
|
(47)конечно. В (31) писал.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |