Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) ИндекированнаяТаблица. Нечеткий поиск строки. (число прочтений - 20314 )
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
ИндекированнаяТаблица. Нечеткий поиск строки.
28. Июня 2006 :: 08:32
Печать  
Как в ИндексированнойТаблице сделать поиск по нескольким первым символам колонки.
Например.
ABCD
BCDE
EFGH
Как при поиске по подстроке "BC" попасть на строку "BCDE"?
Только перебором строк или есть метод создания какого-нибудь хитрого индекса.
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ИндекированнаяТаблица. Нечеткий поиск строки.
Ответ #1 - 28. Июня 2006 :: 08:56
Печать  
Без проблем.

Схематично:
  • строишь индекс по колонке
  • ставишь фильтр от "BC  " до "BCЯЯ"
  • обрабатываешь выборку
  •   

    De quelle planète es-tu?
    Наверх
     
    IP записан
     
    vip
    1c++ power user
    Отсутствует



    Сообщений: 1570
    Зарегистрирован: 19. Мая 2006
    Re: ИндекированнаяТаблица. Нечеткий поиск строки.
    Ответ #2 - 28. Июня 2006 :: 09:17
    Печать  
    Цитата:
    Без проблем.

    Схематично:
    строишь индекс по колонке
    ставишь фильтр от "BC  " до "BCЯЯ"
    обрабатываешь выборку

    Нет, задача не такая. Надо механизм, как штатный быстрый поиск в списке по первым наименованиям.
    Использую для быстрого поиска в справочниках при применении ИспользоватьСписокЭлементов (штатный поиск при этом не работает).
    Перехватываю нажатия клавиш и анализирую переданный список. Пока только перебором.
    Если список небольшой, то все нормально.
    Хочу одновременно со списком создавать ИндексированнуюТаблицу и искать в ней.
      
    Наверх
    ICQ  
    IP записан
     
    DrACe
    1c++ donor
    1c++ power user
    Отсутствует


    1С++ любитель

    Сообщений: 447
    Местоположение: г. Новосибирск
    Зарегистрирован: 23. Мая 2006
    Пол: Мужской
    Re: ИндекированнаяТаблица. Нечеткий поиск строки.
    Ответ #3 - 28. Июня 2006 :: 09:45
    Печать  
    vip писал(а) 28. Июня 2006 :: 09:17:
    Использую для быстрого поиска в справочниках при применении ИспользоватьСписокЭлементов (штатный поиск при этом не работает


    почему это не работает?
    просто список надо предварительно сортировать, а потом пихать в ИспользоватьСписокЭлементов(СЗ), тогда и быстрый поиск отваливаться не будет
      
    Наверх
     
    IP записан
     
    vip
    1c++ power user
    Отсутствует



    Сообщений: 1570
    Зарегистрирован: 19. Мая 2006
    Re: ИндекированнаяТаблица. Нечеткий поиск строки.
    Ответ #4 - 28. Июня 2006 :: 10:18
    Печать  
    Цитата:
    почему это не работает?
    просто список надо предварительно сортировать, а потом пихать в ИспользоватьСписокЭлементов(СЗ), тогда и быстрый поиск отваливаться не будет

    А ты попробуй.
    Ищет только сверху вниз.
    Это давняя проблема.
      
    Наверх
    ICQ  
    IP записан
     
    DrACe
    1c++ donor
    1c++ power user
    Отсутствует


    1С++ любитель

    Сообщений: 447
    Местоположение: г. Новосибирск
    Зарегистрирован: 23. Мая 2006
    Пол: Мужской
    Re: ИндекированнаяТаблица. Нечеткий поиск строки.
    Ответ #5 - 28. Июня 2006 :: 10:38
    Печать  
    ааа... я то думал, что у тебя из-за неотсортированности поиск срывается на втором символе... а снизу-вверх она действительно не ищет... Нерешительный
      
    Наверх
     
    IP записан
     
    DrACe
    1c++ donor
    1c++ power user
    Отсутствует


    1С++ любитель

    Сообщений: 447
    Местоположение: г. Новосибирск
    Зарегистрирован: 23. Мая 2006
    Пол: Мужской
    Re: ИндекированнаяТаблица. Нечеткий поиск строки.
    Ответ #6 - 28. Июня 2006 :: 10:41
    Печать  
    тогда - как вариант - а почему бы не поручить это дело SQL?

    ведь ты же наверняка запросом получаешь СписокЗначений, тогда его можно сохранить на серваке во временную табличку и подзапросиком получать первый нужный тебе элемент по введенным символам. Тогда не нужно этот список заливать в ИТ, не нужно ее индексировать...
      
    Наверх
     
    IP записан
     
    artbear
    1c++ developer
    1c++ moderator
    Отсутствует


    Эх, дайте что-нибудь новенькое
    да полезное потести

    Сообщений: 6303
    Местоположение: Москва
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: ИндекированнаяТаблица. Нечеткий поиск строки.
    Ответ #7 - 28. Июня 2006 :: 10:42
    Печать  
    Кстати, проблема поиска очень актуальна.
    И на самом деле хотелось бы увидеть в ИндексТЗ какой-нибудь вариант расширенного поиска.
    Возможно, с использованием символом замены (? и *) или более навороченный вариант с использованием регулярных выражений.
    Хотя как сделать индексацию в таком случае, я пока что не представляю Печаль
      

    OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
    Наверх
    GTalkSkype/VoIPICQ  
    IP записан
     
    vip
    1c++ power user
    Отсутствует



    Сообщений: 1570
    Зарегистрирован: 19. Мая 2006
    Re: ИндекированнаяТаблица. Нечеткий поиск строки.
    Ответ #8 - 28. Июня 2006 :: 10:59
    Печать  
    Цитата:
    тогда - как вариант - а почему бы не поручить это дело SQL?

    Не стоит овчинка выделки, наверное.
    Цитата:
    Использую для быстрого поиска в справочниках при применении ИспользоватьСписокЭлементов (штатный поиск при этом не работает).
    Перехватываю нажатия клавиш и анализирую переданный список. Пока только перебором.

    Вот так работает достаточно быстро.
    Применяю для показа в справочнике товара только с остатками.
    В отдельной группе его получается сравнительно немного и скорость не отличается от штатного поиска.
    Но попробовать можно. И использовать LIKE и TOP1. Вдруг быстрее.
      
    Наверх
    ICQ  
    IP записан
     
    ADirks
    1c++ developer
    1c++ moderator
    Отсутствует


    А нужны ли мы нам?

    Сообщений: 692
    Местоположение: Новосибирск
    Зарегистрирован: 22. Мая 2006
    Пол: Мужской
    Re: ИндекированнаяТаблица. Нечеткий поиск строки.
    Ответ #9 - 28. Июня 2006 :: 12:54
    Печать  
    vip писал(а) 28. Июня 2006 :: 08:32:
    Как в ИндексированнойТаблице сделать поиск по нескольким первым символам колонки.
    Например.
    ABCD
    BCDE
    EFGH
    Как при поиске по подстроке "BC" попасть на строку "BCDE"?
    Только перебором строк или есть метод создания какого-нибудь хитрого индекса.

    А метод НайтиБлижайшуюБольше() разве не спасёт Отца Русской Демократии?  По-моему так самое оно.
      
    Наверх
     
    IP записан
     
    ADirks
    1c++ developer
    1c++ moderator
    Отсутствует


    А нужны ли мы нам?

    Сообщений: 692
    Местоположение: Новосибирск
    Зарегистрирован: 22. Мая 2006
    Пол: Мужской
    Re: ИндекированнаяТаблица. Нечеткий поиск строки.
    Ответ #10 - 28. Июня 2006 :: 12:56
    Печать  
    Цитата:
    Нет, задача не такая. Надо механизм, как штатный быстрый поиск в списке по первым наименованиям.
    Использую для быстрого поиска в справочниках при применении ИспользоватьСписокЭлементов (штатный поиск при этом не работает).
    Перехватываю нажатия клавиш и анализирую переданный список.

    А тут я бы вообще посмотрел в сторону объекта ТабличноеПоле.
      
    Наверх
     
    IP записан
     
    vip
    1c++ power user
    Отсутствует



    Сообщений: 1570
    Зарегистрирован: 19. Мая 2006
    Re: ИндекированнаяТаблица. Нечеткий поиск строки.
    Ответ #11 - 28. Июня 2006 :: 13:34
    Печать  
    Цитата:
    А метод НайтиБлижайшуюБольше() разве не спасёт Отца Русской Демократии?  По-моему так самое оно.

    Спасло. Самое оно. Спасибо! Улыбка
    Цитата:
    А тут я бы вообще посмотрел в сторону объекта ТабличноеПоле.

    Ни разу, если честно, не пользовался. А надо бы попробовать.
    Но в моем случае удается сохранить полноценный справочник с быстрым поиском при ИспользоватьСписокЭлементов(). ТабличноеПоле, наверное, все-таки для других случаев.
    А как ты относишься к вот этому?
    Цитата:
    Кстати, проблема поиска очень актуальна.
    И на самом деле хотелось бы увидеть в ИндексТЗ какой-нибудь вариант расширенного поиска.
    Возможно, с использованием символом замены (? и *) или более навороченный вариант с использованием регулярных выражений.
    Хотя как сделать индексацию в таком случае, я пока что не представляю
      
    Наверх
    ICQ  
    IP записан
     
    vip
    1c++ power user
    Отсутствует



    Сообщений: 1570
    Зарегистрирован: 19. Мая 2006
    Re: ИндекированнаяТаблица. Нечеткий поиск строки.
    Ответ #12 - 28. Июня 2006 :: 19:06
    Печать  
    Цитата:
    А метод НайтиБлижайшуюБольше() разве не спасёт Отца Русской Демократии?  По-моему так самое оно.

    Нет. Все-таки не спас Злой
    Работает так.
    Находит слово, начинающееся с первой буквы ключа и все. На дальнейшее увеличение длины ключа не реагирует.
    Пример.
    Патрушев
    Петров.
    Ключ "П" - результат Патрушев.
    Ключ "Пе" - результат Патрушев.

    Если такого нет, находит следующее по алфавиту.
    Абыдно...
      
    Наверх
    ICQ  
    IP записан
     
    kms
    1c++ power user
    1c++ moderator
    Отсутствует


    я хочу, чтоб сюда проложили
    дорогу оттуда...

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: ИндекированнаяТаблица. Нечеткий поиск строки.
    Ответ #13 - 28. Июня 2006 :: 19:27
    Печать  
    vip писал(а) 28. Июня 2006 :: 09:17:
    Цитата:
    Без проблем.

    Схематично:
    строишь индекс по колонке
    ставишь фильтр от "BC  " до "BCЯЯ"
    обрабатываешь выборку

    Нет, задача не такая. Надо механизм, как штатный быстрый поиск в списке по первым наименованиям.
    Использую для быстрого поиска в справочниках при применении ИспользоватьСписокЭлементов (штатный поиск при этом не работает).
    Перехватываю нажатия клавиш и анализирую переданный список. Пока только перебором.
    Если список небольшой, то все нормально.
    Хочу одновременно со списком создавать ИндексированнуюТаблицу и искать в ней.


    Какая "не такая". Именно такая.
      

    De quelle planète es-tu?
    Наверх
     
    IP записан
     
    vip
    1c++ power user
    Отсутствует



    Сообщений: 1570
    Зарегистрирован: 19. Мая 2006
    Re: ИндекированнаяТаблица. Нечеткий поиск строки.
    Ответ #14 - 28. Июня 2006 :: 19:57
    Печать  
    Цитата:
    Какая "не такая". Именно такая.

    Тогда попробуй вот эту задачу.
    Цитата:
    Пример.
    Патрушев
    Петров.
    Ключ "П" - результат Патрушев.
    Ключ "Пе" - результат Патрушев.

    Найди "Петров" по "Пе"
      
    Наверх
    ICQ  
    IP записан
     
    Переключение на Главную Страницу Страницы: [1] 2 3 
    ОтправитьПечать