View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0002238 | SAS.Планета | Баг / Bug | public | 30-10-2013 09:29 | 03-11-2013 10:10 |
| Reporter | Yurec66 | Assigned To | Garl | ||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | resolved | Resolution | fixed | ||
| Platform | Windows | OS | XP | OS Version | SP3 |
| Product Version | .Nightly | ||||
| Target Version | 131111 | Fixed in Version | 131111 | ||
| Summary | 0002238: В результатах офлайнового поиска выдается название не на том языке, который требуется | ||||
| Description | После обновления ночной сборки на 131030.7597 поиск вроде происходит, позиционируется вроде правильно(пока только 1 проверка выполнялась), но в списке предлагаемых вариантов искомый объект не числится, хотя как и говорилось ранее в файле BY.txt это название присутствует. | ||||
| Tags | No tags attached. | ||||
| Attached Files | |||||
|
|
А чем первый пункт в результатах поиска не устраивает? |
|
|
>поиск вроде происходит, позиционируется вроде правильно ч.т.д. |
|
|
>А чем первый пункт в результатах поиска не устраивает? Оно конечно подштаники тоже можно назвать штанами. Однако поиск должен предлагать, если есть в базе поиска,то, что я конкретно ищу. А в файле слово "Могилев" конкретно присутствует. |
|
|
Ну так и в первом результате слово Могилев присутствует причем на куче языков. |
|
|
На картинке, которая приложена есть только два варианта. В первом совершенно не то слово, во втором включение слова Могилев идет через буку "ё", а не как я написал через "е". Если внимательно посмотреть файл BY.txt, то слово "Могилев" присутствует рядом со словами "Магілёў,Могилев,Могильов,Могилёв,"(строка 7031). Почему программа не выводит искомое слово если оно есть? |
|
|
Вот еще один баг отыскал. Попытался ввести в строку поиска слово "могилев" в нижнем регистре. (см. картину в приложениях) ps дополнительный вариант "Могилёв" - все кроме искомого слова. |
|
|
ошибка io - из за того что файл открыт вами в другой программе для остальных вариантов есть ссылка Full Description - там полностью строка в которой найдёно совпадение. как по моему так всё работает даже лучше чем надо. |
|
|
Не, с ошибкой нужно бороться. Я только из-за нее этот тикет еще не закрыл. |
|
|
так а на пальцах объясние что не так ищется, как я понимаю тут проблема с Ё-фиакцией. или то что в caption результатов поиска выводится не то что искали? |
|
|
Я про ошибку IO error |
|
|
надо сделать try? |
|
|
>для остальных вариантов есть ссылка Full Description В которой перечислен всевозможный бред кроме того что нужно? "MVQ,Magiljou,Maguilov,Mahileu,Mahiliou,Mahiliou,Mahiljou,Mahiljov,Mahiljow,Mahiljou,Mahilou,Mahilou,Mahilyow,Mahileu,Mogil'ov,Mogilev,Mogileva,Mogilew,Mogiliavas,Mogiliovas,Mogiljov,Mogilov,Mogilev,Mogileva,Moguilev,Mohylew" >или то что в caption результатов поиска выводится не то что искали? именно Мало того, что Full Description совершенно бесполезная фича, в которой нет привязки ни к региону, ни к области... Зачем тогда она ваще нужна? Зачем нужен предлагаемый список, если я не знаю куда на карте он меня направляет? Одно название "Новоселки" вам выдаст 15-20 совпадений по разным регионам Беларуси. А как мне знать где то что я ищу? Лучше уж тогда убрать Full Description , чтобы не сбивало с толку. |
|
|
>надо сделать try? Заменить на нормальное чтение при помощи TFileStream или чего-то на нем основанного. |
|
|
>>или то что в caption результатов поиска выводится не то что искали? > именно ок давайте разберём структуру файла на пальцах: см картинку, какое из полей выводить в качестве имени? (сейчас выводится 4, или 3 поле) от Full Description отакзываться не считаю правильным ибо лишней информация не будет. |
|
|
Может структура файла изначально придумана не грамотно? 2 и 3 поля дублируют друг друга. В качестве имени(я так понимаю то, что должно выводиться в списке найденного) нужно выводить искомое слово с точным совпадением. А уж в Full Description дополнительно можно прописать все остальные элементы 4-го поля. Остальную галематью убрать ! В противном случае в дополнительной информации смысла 0. К чему эта фраза Europe/Minsk ? Какая смысловая полезность? |
|
|
>Не, с ошибкой нужно бороться. Я только из-за нее этот тикет еще не закрыл. Согласен с Yurec66, что исправлять нужно не только I/O. |
|
|
>Одно название "Новоселки" вам выдаст 15-20 совпадений по разным Прошу прощения, немного ошибся. При поиске объекта новоселки выдало 120 совпадений по официальной базе. Почему это знаю, да потому, что как то пришлось написать программу используя коды СОАТО. Так вот при выборе населенного пункта моя программа мало того, что показывала к какой области относится название, так еще нужно было смотреть район и более того сельсовет, чтобы точно определиться с выбором. Т.к. в одно районе но в разных сельсоветах могут быть две одинаковые деревни. (см. прикрепленное фото вверху) |
|
|
>В противном случае в дополнительной информации смыслы 0. К чему эта фраза Europe/Minsk ? Какая смысловая полезность? так оно есть в файле, я его только вывожу, а смысловую нагрузку - пусть думет тот кому оно надо :) в теории Europe/Minsk отображает местоположение, допустим есть города с одинаковыми названиями в африке и в европе, так вот там будет видно что и где. з.ы. могли бы и сами поправить и пул реквест сделать |
|
|
>в теории Europe/Minsk отображает местоположение Ну это очень глобальное определение местоположения. >могли бы и сами поправить и пул реквест сделать Не совсем понял что поправить и что означает выражение пул реквест сделать ? |
|
|
вот исходник модуля поиска по *.txt https://bitbucket.org/sas_team/sas.planet.src/src/c73a7031381d60d291302e3bc31a89c6c5009727/GeoCoder/u_GeoCoderByTXT.pas?at=default можете написать как должно быть. |
|
|
>можете написать как должно быть. Знаете, ковыряться в чужом коде - не лучшее занятие, когда недостающие типы и пр. находятся в других модулях. Я думаю для начала действительно нужно привести сам исходный файл, в данном случае By.txt, к удобочитабельному виду, с необходимой информацией без лишних "дополнений". А что искать и что выводить - я уже озвучивал. Если 100% совпадение - можно сразу позиционировать по координатам, а если есть варианты (100% + доп.) - вот тогда их можно вывести в предлагаемый список выбора. |
|
|
Наименование населенных пунктов с принадлежностью к конкретному региону, области, району и т.д. найти можно. Другое дело где брать координаты искомого? |
|
|
>Знаете, ковыряться в чужом коде - не лучшее занятие, когда недостающие типы и пр. находятся в других модулях. Знаете, а настройка среды для разработки SAS, занимает несколько минут и даже есть готовая виртуалка. Вопрос скорее в том, хотите ли вы реально улучшить программу, которой пользуетесь. Для тех кто хочет - преград нету, а остальные найдут сотню отговорок. >Я думаю для начала действительно нужно привести сам исходный файл А я думаю, что вы обращаетесь не по адресу. Этими файлами (содержимым и форматом) заведуют ребята с geonames.org, вот им и выскажите свои мысли по поводу смысловой нагрузки полей и проч. Наше дело - парсинг и отображение результатов. |
|
|
наше дело сделать чтобы всё работало "из коробки" скачал положил и готово! |
|
|
>Знаете, а настройка среды для разработки SAS, занимает несколько минут и даже есть готовая виртуалка А вот про это слышу впервые >Для тех кто хочет - преград нету, а остальные найдут сотню отговорок Желание есть огромное, другое дело как получится... У каждого программиста свой стиль, а посему все равно разруливать придется сперва. >Этими файлами (содержимым и форматом) заведуют ребята с geonames.org Оооо... ну это полный абзац. Вы хотите, чтобы неосведомленный человек что то сразу понял из того множества непонятных букф? |
|
|
>чтобы неосведомленный человек что то сразу понял Осведомляйтесь, в шею никто не гонит. >множества непонятных букф Какое конкретно множество вам не понятно? |
|
|
>Какое конкретно множество вам не понятно? Да хотя бы на кого выходить, чтобы понять кто формирует этот файл, какая структура полей, откуда берутся данные и т.д. |
|
|
Советую побродить по их сайту, там всё есть: -GeoNames Team -Readme.txt А тут это уже будет явный оффтоп. |
|
|
Установил виртуальную машину и запустил на ней поиск. Так вот, там находит все прекрасно Могилев.(см. картинку выше). Правда там |
|
|
>Так вот, там находит все прекрасно Могилев. а какая ревизия исходников в виртуалке? |
|
|
ёлки маталки, так Ваш могилёв же на Украине, а мы его в by.txt ишем... |
|
|
>а какая ревизия исходников в виртуалке? Ваш сленг порою непонятен. Имеется ввиду какая разница в исходниках? Не могу сказать, пытался разбираться - так и не смог пока найти событие обработки ComboBox для поиска. Да впрочем не простой это и CmboBox оказывается. Теперь я начинаю понимать, почему vdemidov написал "а способов пофиксить это не добавив кучу новых глюков я пока не вижу.". Но все равно не могу принять это за оправдание такого мастера как он. >ёлки маталки, так Ваш могилёв же на Украине, а мы его в by.txt ишем... Эээ... пардонс. На Украине есть Могилев Подольский, а в Беларуси - Могилев. Вот вы и сам еще раз убедились для чего нужна более информативная инфа, чтобы видеть какой объект нам предлагает программа для перехода по координатам. Разобравшись со структурой файла BY.txt действительно понял, что там в принципе все по делу. Можно только определиться с нужными полями и выбирать оттуда информацию. Там всего то нужно 2-3 поля задействовать и все. |
|
|
>Там всего то нужно 2-3 поля задействовать и все. так а мы чего и делаем то, (ищем по всей строке) а затем выводим заголовок: 2 поле, если оно пустое - тогда третье sname := VTabArray.Strings[3]; if sname = '' then begin sname := VTabArray.Strings[2]; end; щирота\долгота slat := VTabArray.Strings[4]; slon := VTabArray.Strings[5]; описание sdesc := VTabArray.Strings[17] + #$D#$A + VTabArray.Strings[01] + #$D#$A + VTabArray.Strings[02] + #$D#$A + VTabArray.Strings[03] + #$D#$A + VTabArray.Strings[18] + #$D#$A; предложения? |
|
|
C выводом каких полей нужно подумать как лучше. В первую очередь нужно разобраться почему программа не находит слово, которое 100% присутствует в файле. |
|
|
давайте конкретный файл и конкретный пример слова. у меня есть BY.txt размером 4,085,794 байт. давайте конкретно на нём обкатывать. |
|
|
Я вчера скачал свежий BY.txt (в TC размер 4106173). Может это не существенно будет для нашей проверки. Строка №7028 - в 4-м поле есть включение "Mohylew,Магілёў,Могилев,Могильов,Могилёв,Могиљов". Т.е точно есть слово "Могилев" и точно есть слово "Могилёв". Так вот при искомых словах "Могилев", "Могилёв" ни то ни другое не находятся. Почему то выводятся Могилевцы, Могилевская область и пр., но только не то , что нам нужно. |
|
|
Что то наталкивает на мысль, то возможно это связано с кодировкой, т.к. в этом одном файле присутствуют слова в разных кодировках. |
|
|
У всех файлов с geonames одна кодировка - utf-8. |
|
|
ок скачал 4,106,173 строка 7028 625662 Makarychy Makarychy Makarichi,Makarychy, М а к а р и ч и, М а к а р ы ч ы 52.9743 28.3158 P PPL BY 05 0 171 Europe/Minsk 2012-01-18 иль я не прав? |
|
|
наша строка 7031 625665 Mahilyow Mahilyow MVQ,Magiljou,Maguilov,Mahileu,Mahiliou,Mahilioŭ,Mahiljou,Mahiljov,Mahiljow,Mahiljoŭ,Mahilou,Mahiloŭ,Mahilyow,Mahilëŭ,Mogil'ov,Mogilev,Mogileva,Mogilew,Mogiliavas,Mogiliovas,Mogiljov,Mogilov,Mogilëv,Mogiļeva,Moguilev,Mohylew,Магілёў,Могилев,Могильов,Могилёв,Могиљов 53.9168 30.3449 P PPLA BY 06 369200 184 Europe/Minsk 2013-06-27 слово "Могилев" в ней есть точно и она выводится в первом же результате поиска только выводится как "Могиљов" - в этом загвоздка? |
|
|
итак: код l := length(sname); while (copy(sname,l,1)<>',') and (l>0) do dec(l); sname := copy(sname,l+1,length(sname)-l); берёт из строки 'MVQ,Magiljou,Maguilov,Mahileu,Mahiliou,Mahiliou,Mahiljou,Mahiljov,Mahiljow,Mahiljou,Mahilou,Mahilou,Mahilyow,Mahileu,Mogil'ov,Mogilev,Mogileva,Mogilew,Mogiliavas,Mogiliovas,Mogiljov,Mogilov,Mogilev,Mogileva,Moguilev,Mohylew,Магілёў,Могилев,Могильов,Могилёв,Могиљов' самое последнее название, т.к. оно является местным. если не устраивает - предложите алгоритм какое из вышеуказанных названий из строки нужно выводить? и как его вытяскивать , учитывая что строка может быть и пустой. |
|
|
>У всех файлов с geonames одна кодировка - utf-8. name : name of geographical point (utf8) varchar(200) asciiname : name of geographical point in plain ascii characters, varchar(200) >и она выводится в первом же результате поиска Где? Не увидел. >только выводится как "Могиљов" - в этом загвоздка? Как вы считаете, если бы Москва выводилась ка Мысква, это было бы то же самое? И если слово присутствует 100% то почему оно именно не выводится? Или как я уже писал при 100% совпадении при нахождении просто позиционировать на карте без вывода доп. информации. А в случае нахождения 2-х и долее одинаковых 100% совпадений выводить варианты для выбора. |
|
|
>самое последнее название, т.к. оно является местным. Могиљов Сколько живу в Беларуси ни разу не слыхал такого диалекта |
|
|
>>и она выводится в первом же результате поиска > Где? Не увидел. Snap_001.jpg > А в случае нахождения 2-х и долее одинаковых 100% совпадений выводить варианты для выбора. так оно и делается. только как узнать 100% совпадение или нет? к примеру если набрать "Красное" выйдет и "Красное" и "Красное Село" что есть правильно? что выводить в заголовок результата поиска? везде "Красное" ? >>только выводится как "Могиљов" - в этом загвоздка? > Как вы считаете, если бы Москва выводилась ка Мысква, это было бы то же самое? с точки зрения алгоритма - да |
|
|
>только как узнать 100% совпадение или нет? Выполнять поиск используя дилемитеры. Это не сложно, если мы поиск ведем конкретно по 4-му полю. ps как вариант функция из Rx function IsWordPresent(const W, S: string; const WordDelims: TCharSet): Boolean; Берем 4-е поле как целую строку, подсчитываем кол-во запятых. И в цикле перебираем каждое слово используя WordDelims как [','] на точное совпадение. |
|
|
Yurec66 Вот вы процитировали, но смысл не поняли. Поле asciiname - это то же, что и поле name, только без национальных символов - они все заменяются на ansii символы. Скорее всего сделано для совместимости с программами, не умеющими работать с юникодом. Повторяю, все файлы идут в utf-8 кодировке. Об этом чётко написано в самом начале readme: The data format is tab-delimited text in utf8 encoding. Garl >самое последнее название, т.к. оно является местным. Нет, оно не является местным. В этом поле через запятую идут альтернативные названия на различных языках. Конкретно Могиљов - это название города на сербском языке. |
|
|
>Нет, оно не является местным. В этом поле через запятую идут альтернативные названия на различных языках. Конкретно Могиљов - это название города на сербском языке. наши действия? мутить хитрый вывод заголовка? |
|
|
>мутить хитрый вывод заголовка? Там ничего хитрого и Yurec66 уже описал примерный алгоритм. Только тебе там никаких дополнительных функций не нужно - подстрока парсится тем же TStringList на ура. |
|
|
https://bitbucket.org/sas_team/sas.planet.src/pull-request/235/2238 |
|
|
Смотрю комментов не добавилось, а появилась картинка после поиска по слову "могилев". Так вот, конфуз однако. На карте стрелка позиционирована верно, хоть не видно имени, но верно. Однако в предлагаемом списке красным подчеркнуто не является истиной. Присмотритесь внимательно, там написано "Europe/Kiev" а это есть Украина. А на Украине нет города "Могилев", есть "Могилев подольский". Если быть точным, то в кассах Ж/Д наш Белорусский Могилев у них идет как "Могилев на Днепре". Но не суть. Пока одобрям по поиску сказать не могу, если подчеркнуто именно то, на что вы считаете позиционирована стрелка на карте. |
|
|
Garl Сейчас имена нормально выводит, но не позиционирует на Могилев. Одно починил, второе сломал :( |
|
|
> но не позиционирует на Могилев. так и было. при количестве результатов > 1 результаты сотрируются по отдалённости от текущего центра карты и выбирается ближайший. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 30-10-2013 09:29 | Yurec66 | New Issue | |
| 30-10-2013 09:29 | Yurec66 | File Added: Snap_001.jpg | |
| 30-10-2013 09:45 | vdemidov | Note Added: 0013153 | |
| 30-10-2013 09:45 | vdemidov | Status | new => feedback |
| 30-10-2013 09:57 | Garl | Note Added: 0013154 | |
| 30-10-2013 10:22 | Yurec66 | Note Added: 0013155 | |
| 30-10-2013 10:22 | Yurec66 | Status | feedback => new |
| 30-10-2013 10:23 | Yurec66 | Note Edited: 0013155 | |
| 30-10-2013 10:25 | vdemidov | Note Added: 0013156 | |
| 30-10-2013 10:35 | vdemidov | Status | new => feedback |
| 30-10-2013 10:45 | Yurec66 | Note Added: 0013157 | |
| 30-10-2013 10:45 | Yurec66 | Status | feedback => new |
| 30-10-2013 10:47 | Yurec66 | File Added: Snap_003.jpg | |
| 30-10-2013 10:48 | Yurec66 | Note Added: 0013158 | |
| 30-10-2013 10:50 | Yurec66 | Note Edited: 0013158 | |
| 30-10-2013 10:51 | vdemidov | Assigned To | => Garl |
| 30-10-2013 10:51 | vdemidov | Status | new => assigned |
| 30-10-2013 11:04 | Tolik | Summary | Продолжение "Инцендент 0002233" => Продолжение 0002233 |
| 30-10-2013 12:08 | Garl | Note Added: 0013160 | |
| 30-10-2013 12:20 | vdemidov | Note Added: 0013161 | |
| 30-10-2013 12:53 | Garl | Note Added: 0013162 | |
| 30-10-2013 12:58 | vdemidov | Note Added: 0013163 | |
| 30-10-2013 13:02 | Garl | Note Added: 0013164 | |
| 30-10-2013 13:14 | Yurec66 | Note Added: 0013165 | |
| 30-10-2013 13:28 | vdemidov | Note Added: 0013166 | |
| 30-10-2013 13:51 | Garl | File Added: by_txt.jpg | |
| 30-10-2013 13:55 | Garl | Note Added: 0013167 | |
| 30-10-2013 14:15 | Yurec66 | Note Added: 0013168 | |
| 30-10-2013 14:17 | Yurec66 | Note Edited: 0013168 | |
| 30-10-2013 18:45 | zed | Note Added: 0013172 | |
| 30-10-2013 20:21 | Yurec66 | File Added: Soato.jpg | |
| 30-10-2013 20:22 | Yurec66 | Note Added: 0013175 | |
| 31-10-2013 06:01 | Garl | Note Added: 0013176 | |
| 31-10-2013 09:03 | Yurec66 | Note Edited: 0013168 | |
| 31-10-2013 09:07 | Yurec66 | Note Added: 0013178 | |
| 31-10-2013 09:08 | Yurec66 | Note Edited: 0013178 | |
| 31-10-2013 09:41 | Garl | Note Added: 0013179 | |
| 31-10-2013 14:07 | Yurec66 | Note Added: 0013180 | |
| 31-10-2013 14:10 | Yurec66 | Note Added: 0013181 | |
| 31-10-2013 17:03 | zed | Note Added: 0013182 | |
| 31-10-2013 17:17 | Garl | Note Added: 0013183 | |
| 31-10-2013 18:12 | Yurec66 | Note Added: 0013184 | |
| 31-10-2013 18:16 | zed | Note Added: 0013185 | |
| 31-10-2013 18:21 | Yurec66 | Note Added: 0013186 | |
| 31-10-2013 18:30 | zed | Note Added: 0013187 | |
| 31-10-2013 21:36 | Yurec66 | Note Added: 0013189 | |
| 31-10-2013 21:37 | Yurec66 | File Added: poisk1.jpg | |
| 01-11-2013 03:55 | Garl | Note Added: 0013190 | |
| 01-11-2013 04:17 | Garl | File Added: _search.jpg | |
| 01-11-2013 04:18 | Garl | Note Added: 0013191 | |
| 01-11-2013 07:31 | Yurec66 | Note Added: 0013192 | |
| 01-11-2013 07:38 | Garl | Note Added: 0013193 | |
| 01-11-2013 08:31 | Yurec66 | Note Added: 0013194 | |
| 01-11-2013 08:33 | Garl | Note Added: 0013195 | |
| 01-11-2013 09:04 | Yurec66 | Note Added: 0013196 | |
| 01-11-2013 09:05 | Yurec66 | Note Edited: 0013196 | |
| 01-11-2013 09:07 | Yurec66 | Note Added: 0013197 | |
| 01-11-2013 09:09 | zed | Note Added: 0013198 | |
| 01-11-2013 09:12 | Garl | Note Added: 0013199 | |
| 01-11-2013 09:22 | Garl | Note Added: 0013200 | |
| 01-11-2013 09:31 | Garl | Note Added: 0013201 | |
| 01-11-2013 09:40 | Yurec66 | Note Added: 0013202 | |
| 01-11-2013 09:49 | Yurec66 | Note Added: 0013203 | |
| 01-11-2013 10:04 | Garl | Note Added: 0013204 | |
| 01-11-2013 10:24 | Yurec66 | Note Added: 0013205 | |
| 01-11-2013 10:25 | Yurec66 | Note Edited: 0013205 | |
| 01-11-2013 10:26 | zed | Note Added: 0013206 | |
| 01-11-2013 10:27 | Yurec66 | Note Edited: 0013205 | |
| 01-11-2013 10:32 | Yurec66 | Note Edited: 0013205 | |
| 01-11-2013 11:38 | Garl | Note Added: 0013207 | |
| 01-11-2013 11:56 | zed | Note Added: 0013208 | |
| 01-11-2013 11:59 | zed | Note Edited: 0013208 | |
| 01-11-2013 12:12 | Garl | Note Added: 0013209 | |
| 01-11-2013 14:04 | Yurec66 | Note Added: 0013210 | |
| 02-11-2013 17:44 | vdemidov | Target Version | => 131111 |
| 02-11-2013 17:44 | vdemidov | Summary | Продолжение 0002233 => В результатах офлайнового поиска выдается название не на том языке, который требуется |
| 02-11-2013 17:45 | vdemidov | Status | assigned => resolved |
| 02-11-2013 17:45 | vdemidov | Fixed in Version | => 131111 |
| 02-11-2013 17:45 | vdemidov | Resolution | open => fixed |
| 02-11-2013 18:06 | zed | Note Added: 0013211 | |
| 03-11-2013 10:10 | Garl | Note Added: 0013212 | |
| 08-08-2025 13:22 | zed | Category | Баг => Баг / Bug |