Евгений Музыченко

Previous Entry Share Next Entry
Логика разработчиков 2ГИС :)
emuzychenko
Версия 2ГИС для Android была сделана весьма достойно, пока в 2016-м ее не поменяли на новую - как водится, с блекджеком и шлюхами плавностями и красивостями в ущерб функциональности.

Обновляется оно теперь, когда хочет - в настройках можно запретить лишь автообновление по сотовой сети, а WiFi разработчики полагают по определению бесконечным и бесплатным. Написав летом в поддержку по этому поводу, получил в ответ стандартную отписку об "отсутствии технической возможности", хотя дураку ясно, что это просто такая политика.

Недавно обнаружил, что поиском по части названия невозможно найти некоторые компании, по поводу чего написал им следующее:

Здравствуйте! В версии 2GIS для Android (4.1.10.1690) с базой Новосибирска от декабря
2016-го, невозможно найти некоторые компании с названиями из двух слов
("Дельта-Торг", "Порт-Брю") по первому слову названия, хотя названия вроде
"Гамма-Медикал" или "Роза-Сантана" успешно находятся и по первому слову.
Проверьте, пожалуйста, алгоритм поиска.


В ответ получил традиционно-феерическое:

В данном случае поиск работает корректно. Слова "дельта" и "порт" слишком
часто встречаются, поэтому частичные результаты в названии исключаются из
выдачи (совпадение одного слова из двух).
Слово "гамма" более редкое, поэтому частичное совпадение считается
достаточно релевантным для отображения в выдаче.
Организация "Роза-Сантана" попадает в выдачу по двойному совпадению - части
названия и рубрики "цветы" с ключевым словом "роза".


Это "слишком часто встречаются" особенно умиляет.

Предложил им привести логику к общему знаменателю, поскольку версия для Windows такими ограничениями не страдает, и находит все подходящие варианты. Обещали подумать.

  • 1
Ну это же поведение того же MySQL Full Search по умолчанию: если нашли слишком много записей для терма, считаем терм мусорным. Не знаю, что они там в качестве БД на Андроиде используют, но похоже на ту же логику.

И такой поиск в MySQL никак не управляется?

Configuring the Natural Language Search Threshold

For MyISAM search indexes, the 50% threshold for natural language searches is determined by the particular weighting scheme chosen. To disable it, look for the following line in storage/myisam/ftdefs.h:

#define GWS_IN_USE GWS_PROB
Change that line to this:

#define GWS_IN_USE GWS_FREQ
Then recompile MySQL. There is no need to rebuild the indexes in this case.

Note
By making this change, you severely decrease MySQL's ability to provide adequate relevance values for the MATCH() function. If you really need to search for such common words, it would be better to search using IN BOOLEAN MODE instead, which does not observe the 50% threshold.




Управляется, но через пересборку. Я не хочу сказать, что 2ГИС молодцы, но вот такое поведение — обычно для поисковых движков, которые учитывают релевантность. Типа, если ты нашел слишком много данных, это тебе не полезно. Глупость 2ГИС в этом случае в том, что при поиске по названию исключать нельзя никакие результаты.

То есть, программисты 2ГИС в любом случае имеют над этим контроль?

Я привел MySQL для примера, честно сказать, я без понятия, каким поисковым движком они пользуются на Андроиде (могу спросить, кстати, любопытно). В MySQL для этого требуется пересборка, что геморрой. Но думаю, что если БД, какая бы она ни была, идет с 2ГИС, а не используется какая-нибудь родная Андроидовская (вроде, нет таких, плюс где-то на Кодефесте, что-ли, 2ГИС хвастался, что эту БД они сами писали), то конечно имеют.

  • 1
?

Log in

No account? Create an account