cro-logo      
Добро пожаловать, Гость. Пожалуйста, выберите Вход или Регистрация

 
 
  ГлавнаяСправкаПоискВходРегистрация  
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать
Идентификация по полю, содержащему дефис. (Прочитано 361 раз)
basilura
Опытный пользователь
***
Вне Форума



Сообщений: 60
Идентификация по полю, содержащему дефис.
15.03.2019 :: 01:11:27
 
Считал, что меня непросто по-настоящему удивить,
но события сегодняшнего дня заставляют поделиться следующим:

1. Если текстовое поле равно символу "-" (или его последовательности), то
    соответствующая запись (записи) в идентификации не участвует (вер. 6.4, тип 4, "слияние с неполным ключом"),
    поле, естественно, входит в ключ;
2. Если значение поля очистить в соответствующих записях, это не вызывает изменений в поведении идентификации -
    записи по-прежнему будут игнорироваться (здесь недоумение достигает пика, тип с "неполным ключом");
3. Если поле, содержавшее дефис,  в соответствующих записях заполнить, например, значением
    "нет",  идентификация "просыпается" и работает штатно.

Мне несложно их зачистить до появления в банке, но как-то неизящно получается.
Завтра проверю насколько это существенно, для полей которые
не "равны", а "содержат" дефис.
Я слышал про борьбу с дефисом, но как-то у меня не уложилось (город на воде, где я живу, с чёрточкой).
Если нетрудно, направьте меня в нужном направлении.
А то мне нужно к испытаниям идентификации по множественному полю переходить, а тут обычная
с фокусами...

Наверх
 
basilura 148147668  
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 2 529
Санкт-Петербург
Re: Идентификация по полю, содержащему дефис.
Ответ #1 - 15.03.2019 :: 10:04:04
 
Идентификация происходит по построенным индексам. Индексы, если поле не имеет статус "символьного", строятся по словам. Слова подразумевают только буквы и цифры без знаков препинания, управляющих символов и пробелов, которые являются разделителями слов. Поэтому тире не участвует ни в индексации, ни в идентификации.
Главное отличие идентификации с неполным ключом от слияния при совпадении ключа в том, что в последнем случае при незаполненных идентифицирующих полях идентификация не происходит. При неполном ключе слияние происходит при одинаково незаполненных идентифицирующих полях.
Наверх
 
 
IP записан
 
basilura
Опытный пользователь
***
Вне Форума



Сообщений: 60
Re: Идентификация по полю, содержащему дефис.
Ответ #2 - 15.03.2019 :: 10:34:50
 
Ухватился за идею заменить тип поля с "текстовое" на "символьное". Для номеров домов, корпусов и квартир
вполне подходит.
Спасибо.
Наверх
 
basilura 148147668  
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 2 529
Санкт-Петербург
Re: Идентификация по полю, содержащему дефис.
Ответ #3 - 15.03.2019 :: 10:37:15
 
Только надо учесть, что при символьном поле корпуса "а" и "А" не сольются.
Наверх
 
 
IP записан
 
basilura
Опытный пользователь
***
Вне Форума



Сообщений: 60
Re: Идентификация по полю, содержащему дефис.
Ответ #4 - 15.03.2019 :: 10:52:32
 
Прикручу функцию с преобразованием регистра.
А текстовые поля, отличающиеся регистром, для идентификации считаются одинаковыми?
Наверх
 
basilura 148147668  
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 2 529
Санкт-Петербург
Re: Идентификация по полю, содержащему дефис.
Ответ #5 - 15.03.2019 :: 11:05:46
 
В обычном режиме - да, если "символьное" - нет.
Наверх
 
 
IP записан
 
Пытливый
Профи
****
Вне Форума



Сообщений: 280
Re: Идентификация по полю, содержащему дефис.
Ответ #6 - 16.03.2019 :: 00:25:55
 
Цитата:
Слова подразумевают только буквы и цифры без знаков препинания, управляющих символов и пробелов, которые являются разделителями слов. Поэтому тире не участвует ни в индексации, ни в идентификации

Ну очень удивили. Не знал о такой "особенности", а в свете повсеместного перехода на юникод, вообще дикость. Буква, как и пробел это просто символ привычный человеку, а по сути был и остается байтом или парой байт.
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 2 529
Санкт-Петербург
Re: Идентификация по полю, содержащему дефис.
Ответ #7 - 16.03.2019 :: 01:45:56
 
Цитата:
Ну очень удивили. Не знал о такой "особенности", а в свете повсеместного перехода на юникод, вообще дикость. Буква, как и пробел это просто символ привычный человеку, а по сути был и остается байтом или парой байт.

Чем же удивил?
Одно дело представление символов в "цифровом формате" и другое дело информационное (смысловое) значение набора символов.
Для "цифрового формата"  Цитата:
буква, как и пробел
это, в основном, визуальное представление символа. Причем визуально, и даже по смыслу, разные символы (в машинном кодировании) выглядят одинаково. Например, пробел и неразрывный пробел, тире, неразрывное тире и дефис, кавычки в различных представлениях, несут одинаковое значение (смысл, длительностью паузы, акцентирование) и разные коды. 
Знаки препинания и пробелы это смысловые разделители. А поиск информации осуществляется по смыслу, а не по разделителям и не по машинному представлению.
Юникод (utf-8, utf-16 ...)  не является статичным и может представлять один символ в машинном кодировании длиной от одного до 4-8 байт. Мне правда не удалось найти символов  представленный более чем 3-мя байтами. При этом во всех наборах символов содержится огромное их количество  одинаковых визуально, но разных в кодировании.
Как быть в этом случае с индексацией, поиском, сравнением и идентификацией?
Наверх
 
 
IP записан
 
basilura
Опытный пользователь
***
Вне Форума



Сообщений: 60
Re: Идентификация по полю, содержащему дефис.
Ответ #8 - 18.03.2019 :: 16:50:30
 
Поля оставил типа "текстовое".
Осознал, что проблему создают поля, содержащие
исключительно последовательности дефисов.
Выявляю их на предварительной обработке и превращаю в "нет значения".
Осадочек остался - последовательности дефисов ведут себя иначе,
нежели последовательности пробелов.
Наверх
 
basilura 148147668  
IP записан
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать