Имя: Пароль:
1C
1С v8
Функция "Найти" (в тексте по подстроке)
0 Sintez123
 
14.03.13
12:37
Уважаемые гуру 1с. Может вдруг кто знает.

1) Чем короче строка в которой ищем, тем быстрее ищет, это верно?
2) Чем короче строка подстрока поиска, тем быстрее ищет, верно?
3) Или верно и то и другое?
1 Волшебник
 
14.03.13
12:38
в любом случае ищет долго
2 Sintez123
 
14.03.13
12:38
Если Найти(Строка, Слово) = 0 Тогда
3 Reset
 
14.03.13
12:38
3)

Взял бы да затестил ;)
4 Wobland
 
14.03.13
12:39
1) истина
2) истина
3) истина
5 Sintez123
 
14.03.13
12:39
Уважаемый волшебник, если ли какая-либо альтернатива функции "Найти"? Более быстрая? Но все же необходимо именно проверять есть ли слово в строе, заранее не известно в каком месте строки будет искомое слово.
6 Sintez123
 
14.03.13
12:40
(3)
хм.. а ведь и правда :) я что-то не подумал сделать замер производительности то :)
7 Wobland
 
14.03.13
12:40
(5) можно я вместо волшебника регвыражения предложу?
8 Волшебник
 
14.03.13
12:40
(5) используй запрос с ПОДОБНО
9 Wobland
 
14.03.13
12:41
а вот регвыражения с запросом я бы замерил ;)
10 Sintez123
 
14.03.13
12:41
(8) почитаю, спасибо большое. Запросы вроде хорошо пишу, а ПОДОБНО еще не разу не применял.
11 Рэйв
 
14.03.13
12:41
(5)Ты на 086 проце и  512 кб озу сидишь чтоли?  К чему эта экономия микросекунд?
12 Wobland
 
14.03.13
12:43
(11) для себя? я вот иногда занимаюсь подобной фигнёй
13 Reset
 
14.03.13
12:43
Хм, никогда не упирался в производительносить вот именно Найти(). Нормально ищет. Может, не сталкивался с мегастроками конечно
14 Sintez123
 
14.03.13
12:43
(11) нет, мощный сервер. Приблизительно 11 миллиардов поисков надо сделать :)
15 Волшебник
 
14.03.13
12:44
(14) Убийцу Яндекса и Гугла пишете? :)
16 Sintez123
 
14.03.13
12:44
(13)
строка длиной около мегабайта.
Строк около 11 миллиардов

Так что не упереться не могло )
17 Reset
 
14.03.13
12:44
Вот третий (необязательный) параметр туда добавить не мешало б (ИскатьСПозиции)
18 Sammo
 
14.03.13
12:45
(14) Цель такой, хм, нетривиальной потребности?
19 Wobland
 
14.03.13
12:45
(14) список звёзд во вселенной? для "это имя звезды уже занято"?
20 Sintez123
 
14.03.13
12:45
(15) разумеется нет, не настолько ведь наивен :)
А вы проницательностью не обделены :)
21 Reset
 
14.03.13
12:45
(16) Используйте другую среду
22 Sintez123
 
14.03.13
12:45
(18)
строка длиной около мегабайта.
Строк около 11 миллиардов

Так что не упереться не могло )
23 Рэйв
 
14.03.13
12:45
(14)хрена се у вас задачки:-)
24 Волшебник
 
14.03.13
12:46
Можно ещё завести регистр Индекс, измерение Слово (проиндексированное), ресурс Ссылка

Все длинные строки разбить по словам и загнать в регистр. Пусть там будет несколько миллионов записей.

Далее запрос
Выбрать Ссылка Из Регистр
ГДЕ Слово ПОДОБНО "искомаястрока%"

Здесь важно не ставить процент впереди. Поиск будет моментальный
25 Sammo
 
14.03.13
12:46
(22) Это не ответ. Это постановка задачи...
26 Sintez123
 
14.03.13
12:47
(21) полностью согласен
на 1с будет рабочий прототип мегаторзмозной, после этого будут переписывать на оптимальную среду, но для начала надо понять какая среда будет оптимальнее, а для этого надо прототип. Кроме 1с я ничего не знаю, поэтому вроде логичное решение сделал.
27 Волшебник
 
14.03.13
12:47
ещё можно задействовать Соответствие с ключом типа строка и значением типа ссылки

Загнать миллион строк в Соответствие и искать по нему.
Поиск будет моментальный
28 Рэйв
 
14.03.13
12:47
юзай асм тогда..Это не для 1С задача
29 Волшебник
 
14.03.13
12:48
(28) надо просто знать техники
30 Sintez123
 
14.03.13
12:48
(25) специфическая поисковая система, протопик которой нужно сделать на чем угодно. 1с совсем не подходит для реализации самого поисковика, но прототип и алгоритм на нем составить можно. Среда исполнения не выбрана, выбор можно сделать толькок после того как будет понятно что именно должен делать поисковик. Прототип на 1с должен показать что надо делать и потом подберем оптимальную среду, наймем кодилу и он перепишет.
31 Волшебник
 
14.03.13
12:49
можно задействовать механизм Полнотекстового индекса. Тоже ищет быстро. Только тормозит при обновлении индекса
32 Sintez123
 
14.03.13
12:49
(28) асм не надо, задача будет тяжелой, но не до такой степени. Объектные языке должны справиться. Даже 1с может справиться, просто это слишком кривая разработка получится :)
33 Волшебник
 
14.03.13
12:50
Доктор, почему меня все игнорируют?
Я уже три способа привёл
34 Privalov
 
14.03.13
12:50
(22) Строка такого размера, это почти "Война и мир", да еще думаю и с иллюстрациями.
35 Sintez123
 
14.03.13
12:50
(31) полнотекстовой уже включил давно
36 Privalov
 
14.03.13
12:51
(30) Смысл писать прототип, если потом вся логика и алгоритмы изменятся?
37 Sintez123
 
14.03.13
12:51
(34)
1 строка = 1 веб-страница
сейчас многие страницы даже без ресунков весят по 100 кило и больше, бывает и больше метра.
38 Sintez123
 
14.03.13
12:53
(36) изменится только реализация, алгоритм меняться не будет. Самое долгое и сложное это придумать как вычислять нужные объекты, отделять зерна от плевел. Например "Как на любом сайте, заранее зная формата сайта, получить все ссылки на страницы новостей сайта, если такие есть?". Данный вопрос уже решеный, но это убило много времени. Переписать будет вопросом пары дней, но разработка всех этих алгоритмов займет не менее полугода имхо.
39 Sintez123
 
14.03.13
12:54
(33)
я записал способы ваши, буду пробовать, большое спасибо

ТЕМА ЗАКРЫТА
40 Privalov
 
14.03.13
12:55
(38)Велосипед изобретаете. (39) И не кричи.
41 ptiz
 
14.03.13
12:57
Поисковик на 1С - это круто :)
42 Privalov
 
14.03.13
12:59
43 Sintez123
 
14.03.13
14:34
(42) огромнейшее спасибо!!! :) Столь хорошего ответа я даже не мачтал увидеть. Самое то!
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший