[search][ranking] POIs ranking from scratch. #3035

Merged
vng merged 16 commits from vng-dev into master 2022-08-03 14:38:27 +00:00
vng commented 2022-07-27 17:02:16 +00:00 (Migrated from github.com)
Affected issues: Closes https://git.omaps.dev/organicmaps/organicmaps/issues/3026 Closes https://git.omaps.dev/organicmaps/organicmaps/issues/2530 Closes https://git.omaps.dev/organicmaps/organicmaps/issues/2470 Closes https://git.omaps.dev/organicmaps/organicmaps/issues/2133 Closes https://git.omaps.dev/organicmaps/organicmaps/issues/2070 Closes https://git.omaps.dev/organicmaps/organicmaps/issues/1997 Closes https://git.omaps.dev/organicmaps/organicmaps/issues/1949 Closes https://git.omaps.dev/organicmaps/organicmaps/issues/1560 Closes https://git.omaps.dev/organicmaps/organicmaps/issues/1376 Closes https://git.omaps.dev/organicmaps/organicmaps/issues/678
AntonM030481 (Migrated from github.com) reviewed 2022-07-27 17:02:16 +00:00
biodranik commented 2022-07-27 18:37:06 +00:00 (Migrated from github.com)

FAILED
search_integration_tests/processor_test.cpp:2417 TEST(results[1].GetRankingInfo().GetLinearModelRank() > results[0].GetRankingInfo().GetLinearModelRank()) 0.104256 0.106698

FAILED search_integration_tests/processor_test.cpp:2417 TEST(results[1].GetRankingInfo().GetLinearModelRank() > results[0].GetRankingInfo().GetLinearModelRank()) 0.104256 0.106698
biodranik (Migrated from github.com) requested changes 2022-07-30 11:45:07 +00:00
biodranik (Migrated from github.com) left a comment

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

Предлагаю быстро вынести из этого PR простые и очевидные коммиты с мелкими улучшениями и переписываниями кода, и быстро их помержить. Чтобы PR не разростался.
@ -359,0 +340,4 @@
{"motorway", Motorway},
{"motorway_link", Motorway},
{"path", Outdoor},
{"pedestrian", Pedestrian},
biodranik (Migrated from github.com) commented 2022-07-30 10:55:51 +00:00

Больше нет зависимости от категорий?

Больше нет зависимости от категорий?
@ -215,1 +216,4 @@
DECLARE_CHECKER_INSTANCE(IsWayChecker);
enum SearchRank : uint8_t
{
biodranik (Migrated from github.com) commented 2022-07-30 10:54:33 +00:00

Да, переименуй, чтобы с осмом не путать.

Да, переименуй, чтобы с осмом не путать.
biodranik (Migrated from github.com) commented 2022-07-30 10:57:52 +00:00

?

?
biodranik (Migrated from github.com) commented 2022-07-30 11:00:56 +00:00

Может хранить их как constexpr string_view для ускорения инициализации и избежания ненужных аллокаций далее?

Может хранить их как constexpr string_view для ускорения инициализации и избежания ненужных аллокаций далее?
@ -328,8 +328,19 @@ private:
// Bulgarian - Български
"булевард", "бул", "площад", "пл", "улица", "ул", "квартал", "кв",
biodranik (Migrated from github.com) commented 2022-07-30 10:57:03 +00:00

В этом списке есть дубликаты. Они фильтруются? Можно хотя бы руками явно закомментить. "бул" например.

В этом списке есть дубликаты. Они фильтруются? Можно хотя бы руками явно закомментить. "бул" например.
biodranik (Migrated from github.com) commented 2022-07-30 10:59:02 +00:00

string_view?

string_view?
biodranik (Migrated from github.com) commented 2022-07-30 11:02:55 +00:00

Может string_view таки?

Может string_view таки?
biodranik (Migrated from github.com) commented 2022-07-30 11:03:38 +00:00

Это точно не нужно? Комментарий бы хотя бы.

Это точно не нужно? Комментарий бы хотя бы.
biodranik (Migrated from github.com) commented 2022-07-30 11:06:31 +00:00

Зачем тут фигурные скобки?

Зачем тут фигурные скобки?
biodranik (Migrated from github.com) commented 2022-07-30 11:07:48 +00:00
                             FnT && fn);

И в других местах ниже тоже, не по стилю же.

```suggestion FnT && fn); ``` И в других местах ниже тоже, не по стилю же.
biodranik (Migrated from github.com) commented 2022-07-30 11:08:44 +00:00

Семантику вызова с nullptr хорошо бы задокументировать в комментарии.

Семантику вызова с nullptr хорошо бы задокументировать в комментарии.
@ -86,4 +83,3 @@
unique_ptr<RankTable> ratings = make_unique<DummyRankTable>();
unique_ptr<LazyCentersTable> centers;
bool pivotFeaturesInitialized = false;
biodranik (Migrated from github.com) commented 2022-07-30 11:10:02 +00:00

Не надо тут reserve()?

Не надо тут reserve()?
@ -219,2 +195,2 @@
// to small changes in the original set.
shuffle(b, e, m_rng);
nth_element(iBeg, iMiddle, iEnd, CompareIndices(&PreRankerResult::LessRankAndPopularity, m_results));
filtered.insert(iBeg, iMiddle);
biodranik (Migrated from github.com) commented 2022-07-30 11:17:19 +00:00

Может стоит вынести m_results.begin() и end() в переменные?

Кстати, вспомнил, что в С++17 порядок вычисления аргументов функции строго гарантирован слева направо, но ты наверное это знаешь :)

Может стоит вынести m_results.begin() и end() в переменные? Кстати, вспомнил, что в С++17 порядок вычисления аргументов функции строго гарантирован слева направо, но ты наверное это знаешь :)
biodranik (Migrated from github.com) commented 2022-07-30 11:20:45 +00:00

Вообще, конечно, хорошая реализация поиска продолжит тихонько лупить в фоне после выдачи первоначального лимита результатов, чтобы можно было скроллить дальше. Ну или хотя бы будет дальше запускать поиск явно, если юзер доскроллит в низ списка результатов.

Вообще, конечно, хорошая реализация поиска продолжит тихонько лупить в фоне после выдачи первоначального лимита результатов, чтобы можно было скроллить дальше. Ну или хотя бы будет дальше запускать поиск явно, если юзер доскроллит в низ списка результатов.
biodranik (Migrated from github.com) commented 2022-07-30 11:21:44 +00:00

Это мог быть какой-то edge-case, когда движок не инициализируется нормально, например (протести!) вызов поиска из апишки. Но его нужно тогда системно исправлять, а не ненужной проверкой тут, конечно же.

Это мог быть какой-то edge-case, когда движок не инициализируется нормально, например (протести!) вызов поиска из апишки. Но его нужно тогда системно исправлять, а не ненужной проверкой тут, конечно же.
biodranik (Migrated from github.com) commented 2022-07-30 11:23:49 +00:00

small_set? Тут же динамическая аллокация на каждый айдишник, верно?

small_set? Тут же динамическая аллокация на каждый айдишник, верно?
biodranik (Migrated from github.com) commented 2022-07-30 11:25:40 +00:00

Это означает, что наш лимит на количество фич, выданных поиском, может на самом деле быть больше, верно? kMax + m_currEmit.size() ?
Потому что если нет, то будет моргать. Или я не прав?

Это означает, что наш лимит на количество фич, выданных поиском, может на самом деле быть больше, верно? kMax + m_currEmit.size() ? Потому что если нет, то будет моргать. Или я не прав?
biodranik (Migrated from github.com) commented 2022-07-30 11:28:10 +00:00

Так вот почему плохо ищутся деревни )

Так вот почему плохо ищутся деревни )
biodranik (Migrated from github.com) commented 2022-07-30 11:28:52 +00:00
    os << DebugPrint(info.m_classifType.poi);
```suggestion os << DebugPrint(info.m_classifType.poi); ```
biodranik (Migrated from github.com) commented 2022-07-30 11:30:38 +00:00

Инициализировать точно не нужно по-умолчанию?

Инициализировать точно не нужно по-умолчанию?
biodranik (Migrated from github.com) commented 2022-07-30 11:31:06 +00:00

m_purrCats :)

Уже лучше тогда полностью слово )

m_purrCats :) Уже лучше тогда полностью слово )
biodranik (Migrated from github.com) commented 2022-07-30 11:31:25 +00:00

Фальшивые коты! 🤣

Фальшивые коты! 🤣
@ -105,15 +97,30 @@ ErrorsMade GetPrefixErrorsMade(QueryParams::Token const & token, strings::UniStr
bool IsStopWord(UniString const & s)
biodranik (Migrated from github.com) commented 2022-07-30 11:33:18 +00:00

Тут же явно не все языки. Откуда взялись эти строки?

И уточняющий вопрос: если юзер вбил явно "de La Feature", у него 1 к одному заматчится и будет в топе эта фича? Или стопворды заматчат только Feature?

Тут же явно не все языки. Откуда взялись эти строки? И уточняющий вопрос: если юзер вбил явно "de La Feature", у него 1 к одному заматчится и будет в топе эта фича? Или стопворды заматчат только Feature?
biodranik (Migrated from github.com) commented 2022-07-30 11:37:43 +00:00

const

const
@ -141,8 +149,12 @@ string DebugPrint(NameScore const & score)
string DebugPrint(NameScores const & scores)
biodranik (Migrated from github.com) commented 2022-07-30 11:36:20 +00:00

Давно мучаюсь вопросом: можно ли заменить наш UniString на char32_t? Тогда можно было бы создавать при компиляции constexpr строки U"это будет unicode 32 строка" и избегать рантайм оверхеда.

Хочется, чтобы у всех юзеров ОМ запускался мгновенно и работал везде и во всём быстрее всех, судя по всему, это одна из наших killer-features сейчас )

Давно мучаюсь вопросом: можно ли заменить наш UniString на char32_t? Тогда можно было бы создавать при компиляции constexpr строки `U"это будет unicode 32 строка"` и избегать рантайм оверхеда. Хочется, чтобы у всех юзеров ОМ запускался мгновенно и работал везде и во всём быстрее всех, судя по всему, это одна из наших killer-features сейчас )
@ -548,2 +544,3 @@
auto countryId = BuildCountry(countryName, [&](TestMwmBuilder & builder) {
auto countryId = BuildCountry("Wonderland", [&](TestMwmBuilder & builder)
{
builder.Add(street);
biodranik (Migrated from github.com) commented 2022-07-30 11:39:58 +00:00

Полотенца тестов получаются, может удобнее было бы builder.Add(cafe1).Add(cafe2).Add(cafe3)? Или что-то вроде builder.Add({cafe1, cafe2, cafe3})?

Полотенца тестов получаются, может удобнее было бы builder.Add(cafe1).Add(cafe2).Add(cafe3)? Или что-то вроде builder.Add({cafe1, cafe2, cafe3})?
@ -655,3 +649,4 @@
});
// Tests that postcode is added to the search index.
{
biodranik (Migrated from github.com) commented 2022-07-30 11:40:27 +00:00

kWonderland = "Wonderland"?

kWonderland = "Wonderland"?
@ -660,8 +655,9 @@ UNIT_CLASS_TEST(ProcessorTest, TestPostcodes)
QueryParams params;
biodranik (Migrated from github.com) commented 2022-07-30 11:42:12 +00:00

const?

const?
@ -808,4 +802,2 @@
string const countryName = "Wonderland";
TestCity sanDiego({0, 0}, "San Diego", "en", 100 /* rank */);
TestCity homel({10, 10}, "Homel", "en", 100 /* rank */);
biodranik (Migrated from github.com) commented 2022-07-30 11:41:10 +00:00

Если тут одно и то же везде, то лучше сразу BuildWonderland(lambda).

Если тут одно и то же везде, то лучше сразу BuildWonderland(lambda).
@ -82,0 +71,4 @@
test("San Francisco", "San ", TokenRange(0, 1), NameScore::FULL_PREFIX, 0, 3);
test("San Francisco", "san fr", TokenRange(0, 2), NameScore::PREFIX, 0, 5);
test("San Francisco", "san fracis", TokenRange(0, 2), NameScore::PREFIX, 1, 9);
test("South Fredrick Street", "S Fredrick St", TokenRange(0, 3), NameScore::FULL_MATCH, 0, 11);
biodranik (Migrated from github.com) commented 2022-07-30 11:43:28 +00:00

Если весь тест внутри своего namespace, можно анонимные внутри и не делать, зачем?

Если весь тест внутри своего namespace, можно анонимные внутри и не делать, зачем?
biodranik (Migrated from github.com) commented 2022-07-30 11:43:50 +00:00

Кажется тут скоуп не нужен )

Кажется тут скоуп не нужен )
biodranik (Migrated from github.com) commented 2022-07-30 11:44:12 +00:00

А тут зачем скоуп? :)

А тут зачем скоуп? :)
vng (Migrated from github.com) reviewed 2022-07-30 13:20:03 +00:00
@ -359,0 +340,4 @@
{"motorway", Motorway},
{"motorway_link", Motorway},
{"path", Outdoor},
{"pedestrian", Pedestrian},
vng (Migrated from github.com) commented 2022-07-30 13:20:02 +00:00

Есть категории, есть улицы. Можно зависимость искать, можно нет. Нет смысла тут натягивать.

Есть категории, есть улицы. Можно зависимость искать, можно нет. Нет смысла тут натягивать.
vng (Migrated from github.com) reviewed 2022-07-30 13:20:48 +00:00
@ -328,8 +328,19 @@ private:
// Bulgarian - Български
"булевард", "бул", "площад", "пл", "улица", "ул", "квартал", "кв",
vng (Migrated from github.com) commented 2022-07-30 13:20:47 +00:00

Дубликаты не страшны

Дубликаты не страшны
vng (Migrated from github.com) reviewed 2022-07-30 13:21:07 +00:00
vng (Migrated from github.com) commented 2022-07-30 13:21:07 +00:00

Зачем?

Зачем?
vng (Migrated from github.com) reviewed 2022-07-30 13:21:31 +00:00
vng (Migrated from github.com) commented 2022-07-30 13:21:31 +00:00

Они хранятся как UniString в итоге

Они хранятся как UniString в итоге
vng (Migrated from github.com) reviewed 2022-07-30 13:21:39 +00:00
vng (Migrated from github.com) commented 2022-07-30 13:21:39 +00:00

зачем?

зачем?
vng (Migrated from github.com) reviewed 2022-07-30 13:21:51 +00:00
vng (Migrated from github.com) commented 2022-07-30 13:21:51 +00:00

Неиспользуемый код. Все же собирается :)

Неиспользуемый код. Все же собирается :)
vng (Migrated from github.com) reviewed 2022-07-30 13:22:57 +00:00
vng (Migrated from github.com) commented 2022-07-30 13:22:57 +00:00

default = 0 initialization

default = 0 initialization
vng (Migrated from github.com) reviewed 2022-07-30 13:24:48 +00:00
@ -86,4 +83,3 @@
unique_ptr<RankTable> ratings = make_unique<DummyRankTable>();
unique_ptr<LazyCentersTable> centers;
bool pivotFeaturesInitialized = false;
vng (Migrated from github.com) commented 2022-07-30 13:24:48 +00:00

там неизвестно кол-во, в целом можно - да, можно - нет

там неизвестно кол-во, в целом можно - да, можно - нет
vng (Migrated from github.com) reviewed 2022-07-30 13:26:18 +00:00
@ -219,2 +195,2 @@
// to small changes in the original set.
shuffle(b, e, m_rng);
nth_element(iBeg, iMiddle, iEnd, CompareIndices(&PreRankerResult::LessRankAndPopularity, m_results));
filtered.insert(iBeg, iMiddle);
vng (Migrated from github.com) commented 2022-07-30 13:26:18 +00:00

можно, а что с порядком не так?

можно, а что с порядком не так?
vng (Migrated from github.com) reviewed 2022-07-30 13:26:48 +00:00
@ -219,2 +195,2 @@
// to small changes in the original set.
shuffle(b, e, m_rng);
nth_element(iBeg, iMiddle, iEnd, CompareIndices(&PreRankerResult::LessRankAndPopularity, m_results));
filtered.insert(iBeg, iMiddle);
vng (Migrated from github.com) commented 2022-07-30 13:26:48 +00:00

она так и работает, и это хорошо и не очень одновременно

она так и работает, и это хорошо и не очень одновременно
vng (Migrated from github.com) reviewed 2022-07-30 13:27:59 +00:00
vng (Migrated from github.com) commented 2022-07-30 13:27:59 +00:00

протести, assert покажет

протести, assert покажет
vng (Migrated from github.com) reviewed 2022-07-30 13:28:51 +00:00
vng (Migrated from github.com) commented 2022-07-30 13:28:51 +00:00

он тут не small, возможно (не уверен) стоит заменить на unordered

он тут не small, _возможно_ (не уверен) стоит заменить на unordered
vng (Migrated from github.com) reviewed 2022-07-30 13:30:40 +00:00
vng (Migrated from github.com) commented 2022-07-30 13:30:40 +00:00

Тут не про лимит. Храним предидущий выхлоп, чтобы на следующем он тоже по максимуму остался.

Тут не про лимит. Храним предидущий выхлоп, чтобы на следующем он тоже по максимуму остался.
vng (Migrated from github.com) reviewed 2022-07-30 13:30:49 +00:00
vng (Migrated from github.com) commented 2022-07-30 13:30:49 +00:00

нет

нет
vng (Migrated from github.com) reviewed 2022-07-30 13:31:51 +00:00
vng (Migrated from github.com) commented 2022-07-30 13:31:51 +00:00

в конструкторе, для битов = семантика не работает

в конструкторе, для битов = семантика не работает
vng (Migrated from github.com) reviewed 2022-07-30 13:32:51 +00:00
vng (Migrated from github.com) commented 2022-07-30 13:32:50 +00:00

purr?

purr?
vng (Migrated from github.com) reviewed 2022-07-30 13:34:44 +00:00
@ -105,15 +97,30 @@ ErrorsMade GetPrefixErrorsMade(QueryParams::Token const & token, strings::UniStr
bool IsStopWord(UniString const & s)
vng (Migrated from github.com) commented 2022-07-30 13:34:44 +00:00
  • были всегда, латинское - понятно, де ди, .. - не совсем
  • они исключаются, будто их нет
- были всегда, латинское - понятно, де ди, .. - не совсем - они исключаются, будто их нет
vng (Migrated from github.com) reviewed 2022-07-30 13:35:48 +00:00
@ -141,8 +149,12 @@ string DebugPrint(NameScore const & score)
string DebugPrint(NameScores const & scores)
vng (Migrated from github.com) commented 2022-07-30 13:35:47 +00:00

Мы всегда делаем NormalizeAndSimplify, потому constexpr тут не будет, а тем более в set

Мы всегда делаем NormalizeAndSimplify, потому constexpr тут не будет, а тем более в set
vng (Migrated from github.com) reviewed 2022-07-30 13:36:22 +00:00
@ -655,3 +649,4 @@
});
// Tests that postcode is added to the search index.
{
vng (Migrated from github.com) commented 2022-07-30 13:36:21 +00:00

зачем?

зачем?
vng (Migrated from github.com) reviewed 2022-07-30 13:38:31 +00:00
vng (Migrated from github.com) commented 2022-07-30 13:38:30 +00:00

предполагается что тесты будут добавляться

предполагается что тесты будут добавляться
vng (Migrated from github.com) reviewed 2022-07-30 13:38:40 +00:00
vng (Migrated from github.com) commented 2022-07-30 13:38:40 +00:00

предполагается что тесты будут добавляться

предполагается что тесты будут добавляться
vng (Migrated from github.com) reviewed 2022-07-30 13:39:15 +00:00
@ -548,2 +544,3 @@
auto countryId = BuildCountry(countryName, [&](TestMwmBuilder & builder) {
auto countryId = BuildCountry("Wonderland", [&](TestMwmBuilder & builder)
{
builder.Add(street);
vng (Migrated from github.com) commented 2022-07-30 13:39:15 +00:00

мне не удобнее

мне не удобнее
vng (Migrated from github.com) reviewed 2022-07-30 13:40:57 +00:00
vng (Migrated from github.com) commented 2022-07-30 13:40:57 +00:00

тут код - лучший комментарий :) есть - передай, нет - не передавай

тут код - лучший комментарий :) есть - передай, нет - не передавай
biodranik (Migrated from github.com) reviewed 2022-07-30 14:33:27 +00:00
biodranik (Migrated from github.com) commented 2022-07-30 14:33:27 +00:00

А могли бы храниться как std::u32string_view

А могли бы храниться как std::u32string_view
biodranik (Migrated from github.com) reviewed 2022-07-30 14:36:09 +00:00
biodranik (Migrated from github.com) commented 2022-07-30 14:36:09 +00:00

Нифига не очевидно, это же enum. Напиши лучше явно

  SearchMarkType m_type = SearchMarkType::Default;
Нифига не очевидно, это же enum. Напиши лучше явно ```suggestion SearchMarkType m_type = SearchMarkType::Default; ```
biodranik (Migrated from github.com) reviewed 2022-07-30 14:40:16 +00:00
@ -105,15 +97,30 @@ ErrorsMade GetPrefixErrorsMade(QueryParams::Token const & token, strings::UniStr
bool IsStopWord(UniString const & s)
biodranik (Migrated from github.com) commented 2022-07-30 14:40:16 +00:00
  1. Были всегда понятно, по какому принципу их кто-то нагенерил когда-то давно?
  2. Так разве это правильно? Вообще, я сомневаюсь, что надо такие стопворды в поиске применять. Если пользователь вбивает артикль, значит он уверен, что этот артикль нужен в названии, и нам надо его матчить. Да, приоритет может понизить, если плохо работает.
1. Были всегда понятно, по какому принципу их кто-то нагенерил когда-то давно? 2. Так разве это правильно? Вообще, я сомневаюсь, что надо такие стопворды в поиске применять. Если пользователь вбивает артикль, значит он уверен, что этот артикль нужен в названии, и нам надо его матчить. Да, приоритет может понизить, если плохо работает.
biodranik (Migrated from github.com) reviewed 2022-07-30 14:41:14 +00:00
@ -141,8 +149,12 @@ string DebugPrint(NameScore const & score)
string DebugPrint(NameScores const & scores)
biodranik (Migrated from github.com) commented 2022-07-30 14:41:13 +00:00

Скорее всего нормализацию можно сделать compile-time constexpr при желании )

Скорее всего нормализацию можно сделать compile-time constexpr при желании )
vng (Migrated from github.com) reviewed 2022-07-30 16:47:59 +00:00
vng (Migrated from github.com) commented 2022-07-30 16:47:59 +00:00

Там все равно вызывается нормализация. Ну нет тут практической выгоды

Там все равно вызывается нормализация. Ну нет тут практической выгоды
vng (Migrated from github.com) reviewed 2022-07-30 16:48:37 +00:00
vng (Migrated from github.com) commented 2022-07-30 16:48:37 +00:00

enum определяется в cpp, вынесу в конструктор

enum определяется в cpp, вынесу в конструктор
vng (Migrated from github.com) reviewed 2022-07-30 16:50:07 +00:00
@ -105,15 +97,30 @@ ErrorsMade GetPrefixErrorsMade(QueryParams::Token const & token, strings::UniStr
bool IsStopWord(UniString const & s)
vng (Migrated from github.com) commented 2022-07-30 16:50:06 +00:00

Это можно экспериментировать потом. Но вообще логика скипания stopword в поиске вполне стандартная.

Это можно экспериментировать потом. Но вообще логика скипания stopword в поиске вполне стандартная.
vng (Migrated from github.com) reviewed 2022-07-30 16:50:35 +00:00
@ -141,8 +149,12 @@ string DebugPrint(NameScore const & score)
string DebugPrint(NameScores const & scores)
vng (Migrated from github.com) commented 2022-07-30 16:50:35 +00:00

Вот так жизнь зря и проходит в войне с мельницами :)

Вот так жизнь зря и проходит в войне с мельницами :)
biodranik (Migrated from github.com) reviewed 2022-07-30 20:50:00 +00:00
@ -141,8 +149,12 @@ string DebugPrint(NameScore const & score)
string DebugPrint(NameScores const & scores)
biodranik (Migrated from github.com) commented 2022-07-30 20:50:00 +00:00

Кто-то интегралы считал шаблонами во время компиляции, когда constexpr ещё не было )

Кто-то интегралы считал шаблонами во время компиляции, когда constexpr ещё не было )
biodranik (Migrated from github.com) reviewed 2022-07-30 23:04:34 +00:00
@ -252,0 +204,4 @@
comparator.m_positionIsInsideViewport =
m_params.m_position && m_params.m_viewport.IsPointInside(*m_params.m_position);
comparator.m_detailedScale = mercator::DistanceOnEarth(m_params.m_viewport.LeftTop(),
m_params.m_viewport.RightBottom()) <
biodranik (Migrated from github.com) commented 2022-07-30 22:59:49 +00:00

Выше шаффлится чтобы был random subset of lower priority results. Оно нам точно надо?

Выше шаффлится чтобы был random subset of lower priority results. Оно нам точно надо?
biodranik (Migrated from github.com) commented 2022-07-30 23:03:04 +00:00

Тут получается всего 3iMiddle2 копирований (мув в конце на самом деле копирует, там нечего мувать).
Если в сете будут не сами результаты, а указатели на vector результатов, то копирований будет в два раза меньше.

Тут получается всего 3*iMiddle*2 копирований (мув в конце на самом деле копирует, там нечего мувать). Если в сете будут не сами результаты, а указатели на vector результатов, то копирований будет в два раза меньше.
biodranik (Migrated from github.com) reviewed 2022-07-30 23:07:09 +00:00
biodranik (Migrated from github.com) left a comment

Если реально фиксятся ишью по ссылкам в описании, поправь его сразу чтобы там было Fixes #xxx

Если реально фиксятся ишью по ссылкам в описании, поправь его сразу чтобы там было Fixes #xxx
vng (Migrated from github.com) reviewed 2022-07-31 03:07:07 +00:00
@ -252,0 +204,4 @@
comparator.m_positionIsInsideViewport =
m_params.m_position && m_params.m_viewport.IsPointInside(*m_params.m_position);
comparator.m_detailedScale = mercator::DistanceOnEarth(m_params.m_viewport.LeftTop(),
m_params.m_viewport.RightBottom()) <
vng (Migrated from github.com) commented 2022-07-31 03:07:07 +00:00

не могу сказать определенно, по комментам звучит разумно, потом можно экспериментировать

не могу сказать определенно, по комментам звучит разумно, потом можно экспериментировать
vng (Migrated from github.com) reviewed 2022-07-31 03:16:03 +00:00
vng (Migrated from github.com) commented 2022-07-31 03:16:03 +00:00
  • nth_element переорганизует порядок, просто на указатели не перепишешь
  • если очень хочется повыжимать спичек, можно оставить на потом, будешь играться :) там больше копирований в nth_element
- nth_element переорганизует порядок, просто на указатели не перепишешь - если очень хочется повыжимать спичек, можно оставить на потом, будешь играться :) там больше копирований в nth_element
vng commented 2022-07-31 03:17:02 +00:00 (Migrated from github.com)

Они фиксятся, но я не хочу чтобы issues автоматом (наверное?) закрылись, это для меня самого пометки на потом для написания тестов

Они фиксятся, но я не хочу чтобы issues автоматом (наверное?) закрылись, это для меня самого пометки на потом для написания тестов
vng (Migrated from github.com) reviewed 2022-07-31 03:19:25 +00:00
vng (Migrated from github.com) commented 2022-07-31 03:19:25 +00:00
  • можно попробовать хранить только feature id
  • set -> unordered_set
  • в конце делать типа remove_if или создавать новый вектор

В итоге не факт что и сколько будет лучше, но PR не об этих спичках, помержим, бери код и делай эксперименты.

- можно попробовать хранить только feature id - set -> unordered_set - в конце делать типа remove_if или создавать новый вектор В итоге не факт что и сколько будет лучше, но PR не об этих спичках, помержим, бери код и делай эксперименты.
vng (Migrated from github.com) reviewed 2022-07-31 05:53:21 +00:00
@ -252,0 +204,4 @@
comparator.m_positionIsInsideViewport =
m_params.m_position && m_params.m_viewport.IsPointInside(*m_params.m_position);
comparator.m_detailedScale = mercator::DistanceOnEarth(m_params.m_viewport.LeftTop(),
m_params.m_viewport.RightBottom()) <
vng (Migrated from github.com) commented 2022-07-31 05:53:21 +00:00

Другое дело, что там идет шаффл для результатов, которые точно равны по расстоянию. Врядли мы будем иметь хоть несколько результатов, которые double: distM1 == distM2

Если уж делать, то для интервала с каким-то допуском ..

Другое дело, что там идет шаффл для результатов, которые _точно_ равны по расстоянию. Врядли мы будем иметь хоть несколько результатов, которые double: distM1 == distM2 Если уж делать, то для интервала с каким-то допуском ..
vng (Migrated from github.com) reviewed 2022-07-31 06:33:24 +00:00
vng (Migrated from github.com) commented 2022-07-31 06:33:23 +00:00

Вот что получилось: organicmaps/organicmaps#3035/commits/dd6857db9fc84443023697a2cb454f0dc0247e4d

Вот что получилось: https://git.omaps.dev/organicmaps/organicmaps/pulls/3035/commits/dd6857db9fc84443023697a2cb454f0dc0247e4d
biodranik (Migrated from github.com) reviewed 2022-07-31 08:34:40 +00:00
@ -252,0 +204,4 @@
comparator.m_positionIsInsideViewport =
m_params.m_position && m_params.m_viewport.IsPointInside(*m_params.m_position);
comparator.m_detailedScale = mercator::DistanceOnEarth(m_params.m_viewport.LeftTop(),
m_params.m_viewport.RightBottom()) <
biodranik (Migrated from github.com) commented 2022-07-31 08:34:40 +00:00

О, видишь, а я это недоглядел. Конечно надо поправить. Давай попробуем может вообще без этого шафла?

О, видишь, а я это недоглядел. Конечно надо поправить. Давай попробуем может вообще без этого шафла?
biodranik (Migrated from github.com) reviewed 2022-07-31 08:35:54 +00:00
biodranik (Migrated from github.com) commented 2022-07-31 08:35:54 +00:00

Выглядит вроде норм, юнит тест бы мелкий.

Выглядит вроде норм, юнит тест бы мелкий.
vng (Migrated from github.com) reviewed 2022-07-31 08:53:28 +00:00
vng (Migrated from github.com) commented 2022-07-31 08:53:28 +00:00

Он есть, там небольшой вопрос по порядку исходных элементов nth_element ибо в этом искусственном тесте генерятся куча пои с уже одинаковым расстоянием :)

Он есть, там небольшой вопрос по порядку исходных элементов nth_element ибо в этом искусственном тесте генерятся куча пои с уже _одинаковым_ расстоянием :)
vng (Migrated from github.com) reviewed 2022-07-31 08:54:16 +00:00
@ -252,0 +204,4 @@
comparator.m_positionIsInsideViewport =
m_params.m_position && m_params.m_viewport.IsPointInside(*m_params.m_position);
comparator.m_detailedScale = mercator::DistanceOnEarth(m_params.m_viewport.LeftTop(),
m_params.m_viewport.RightBottom()) <
vng (Migrated from github.com) commented 2022-07-31 08:54:16 +00:00

Я уже добавил правки с ассертом в Review fixes комит.

Я уже добавил правки с ассертом в Review fixes комит.
biodranik (Migrated from github.com) reviewed 2022-08-01 22:50:28 +00:00
biodranik (Migrated from github.com) left a comment

Ох накодякал... Будет быстрее если правки поверх накинешь, и перед мержем сольёшь.
Почти готово, надо только погонять на девайсе перед мержем.

Ох накодякал... Будет быстрее если правки поверх накинешь, и перед мержем сольёшь. Почти готово, надо только погонять на девайсе перед мержем.
@ -28,2 +25,4 @@
{
using namespace std;
template <class ContT> string TypesToString(ContT const & holder)
biodranik (Migrated from github.com) commented 2022-08-01 22:07:06 +00:00

Креатор ещё и неюзаемые неймспейсы детектит?

Креатор ещё и неюзаемые неймспейсы детектит?
biodranik (Migrated from github.com) commented 2022-08-01 22:18:07 +00:00

const?

const?
biodranik (Migrated from github.com) commented 2022-08-01 22:21:13 +00:00

const &

const &
biodranik (Migrated from github.com) commented 2022-08-01 22:29:13 +00:00

Не заметил вторую скобку в конце.

    comparator.m_detailedScale = 2 * kPedestrianRadiusMeters >
        mercator::DistanceOnEarth(m_params.m_viewport.LeftTop(), m_params.m_viewport.RightBottom());
Не заметил вторую скобку в конце. ```suggestion comparator.m_detailedScale = 2 * kPedestrianRadiusMeters > mercator::DistanceOnEarth(m_params.m_viewport.LeftTop(), m_params.m_viewport.RightBottom()); ```
biodranik (Migrated from github.com) commented 2022-08-01 22:31:47 +00:00

Если порядок айдишников не важен, то конечно замени на unordered.

Если порядок айдишников не важен, то конечно замени на unordered.
biodranik (Migrated from github.com) commented 2022-08-01 22:35:45 +00:00

Я вот твои iff не понимаю. Чем бы отличался смысл, если бы тут была одна буква f?

Я вот твои iff не понимаю. Чем бы отличался смысл, если бы тут была одна буква f?
biodranik (Migrated from github.com) commented 2022-08-01 22:37:47 +00:00

const

const
biodranik (Migrated from github.com) commented 2022-08-01 22:38:07 +00:00

Что-то ты часто стал пропускать. А тут будет много оверхеда без const.

Что-то ты часто стал пропускать. А тут будет много оверхеда без const.
@ -241,1 +265,4 @@
result += kPoiType[base::Underlying(m_classifType.poi)];
}
else if (m_type == Model::TYPE_STREET)
{
biodranik (Migrated from github.com) commented 2022-08-01 22:43:54 +00:00

ASSERT не прокатит?

ASSERT не прокатит?
biodranik (Migrated from github.com) commented 2022-08-01 22:45:09 +00:00
  // Do not change this constant, it is used to normalize distance and for playing with distance factor rank.
```suggestion // Do not change this constant, it is used to normalize distance and for playing with distance factor rank. ```
biodranik (Migrated from github.com) commented 2022-08-01 22:46:58 +00:00

фыркающие коты )

фыркающие коты )
vng (Migrated from github.com) reviewed 2022-08-02 03:15:54 +00:00
vng (Migrated from github.com) commented 2022-08-02 03:15:54 +00:00

нет, нельзя

нет, нельзя
vng (Migrated from github.com) reviewed 2022-08-02 03:17:29 +00:00
vng (Migrated from github.com) commented 2022-08-02 03:17:29 +00:00

тут не понял

тут не понял
vng (Migrated from github.com) reviewed 2022-08-02 03:17:50 +00:00
vng (Migrated from github.com) commented 2022-08-02 03:17:50 +00:00

Эти комменты были и писались не мной

Эти комменты были и писались не мной
vng (Migrated from github.com) reviewed 2022-08-02 03:19:03 +00:00
vng (Migrated from github.com) commented 2022-08-02 03:19:03 +00:00
  • это ты стал придираться где не надо :)
  • const чисто семантическая штука, никакой разницы для кода (по крайней мере тут) нет
- это ты стал придираться где не надо :) - const чисто семантическая штука, никакой разницы для кода (по крайней мере тут) нет
vng (Migrated from github.com) reviewed 2022-08-02 03:20:37 +00:00
@ -28,2 +25,4 @@
{
using namespace std;
template <class ContT> string TypesToString(ContT const & holder)
vng (Migrated from github.com) commented 2022-08-02 03:20:37 +00:00

нет

нет
vng (Migrated from github.com) reviewed 2022-08-02 03:34:25 +00:00
@ -241,1 +265,4 @@
result += kPoiType[base::Underlying(m_classifType.poi)];
}
else if (m_type == Model::TYPE_STREET)
{
vng (Migrated from github.com) commented 2022-08-02 03:34:25 +00:00

assert и check разница понятна, выбор всегда на "а чего хотим"
Оставить чек, чтобы потенциальный вылет был читаем, а не стрельба в память

assert и check разница понятна, выбор всегда на "а чего хотим" Оставить чек, чтобы потенциальный вылет был читаем, а не стрельба в память
vng (Migrated from github.com) reviewed 2022-08-02 05:30:17 +00:00
vng (Migrated from github.com) commented 2022-08-02 05:30:17 +00:00

отличная пасхалочка :)

отличная пасхалочка :)
biodranik (Migrated from github.com) approved these changes 2022-08-02 06:54:18 +00:00
biodranik (Migrated from github.com) left a comment

Хэш точно будет так эффективнее, чем сет ранее?

Хэш точно будет так эффективнее, чем сет ранее?
biodranik (Migrated from github.com) reviewed 2022-08-02 06:54:45 +00:00
biodranik (Migrated from github.com) commented 2022-08-02 06:54:45 +00:00

Кривое форматирование было.

Кривое форматирование было.
vng commented 2022-08-02 06:59:19 +00:00 (Migrated from github.com)

В целом unordered эффективнее чем set на не очень маленьких размерах. Несмотря на вроде-бы тяжелый hash, лучше он чем алоцировать память на каждую ноду. Не говоря уже про сложность.

В целом unordered эффективнее чем set на _не очень_ маленьких размерах. Несмотря на _вроде-бы тяжелый_ hash, лучше он чем алоцировать память на каждую ноду. Не говоря уже про сложность.
biodranik (Migrated from github.com) reviewed 2022-08-02 07:04:40 +00:00
biodranik (Migrated from github.com) commented 2022-08-02 07:04:39 +00:00

Хм, в этом кейзе нет. Но const важен для чтения кода.

Хм, в этом кейзе нет. Но const важен для чтения кода.
biodranik (Migrated from github.com) approved these changes 2022-08-03 10:38:44 +00:00
biodranik (Migrated from github.com) left a comment

Ты запускаешь интеграционные тесты перед каждым новым релизом данных?

Ты запускаешь интеграционные тесты перед каждым новым релизом данных?
biodranik (Migrated from github.com) commented 2022-08-03 10:30:29 +00:00

It's

It's
biodranik (Migrated from github.com) commented 2022-08-03 10:30:03 +00:00

Мы умеем отличать cafe от cafe ? Во втором случае юзер вполне может ожидать Cafe Pushkin.

Мы умеем отличать `cafe` от `cafe `? Во втором случае юзер вполне может ожидать Cafe Pushkin.
biodranik (Migrated from github.com) commented 2022-08-03 10:33:06 +00:00

А мы можем вываливать какие-то специальные подсказки/саджесты для юзера, когда наматчит и того и того, чтобы например уточнить, он ищет только категории (все магазины), или по названию (конкретные имена пои, не обязательно магазины)?

А мы можем вываливать какие-то специальные подсказки/саджесты для юзера, когда наматчит и того и того, чтобы например уточнить, он ищет только категории (все магазины), или по названию (конкретные имена пои, не обязательно магазины)?
@ -0,0 +63,4 @@
static std::vector<uint32_t> GetClassifTypes(std::vector<base::StringIL> const & arr)
{
std::vector<uint32_t> res;
biodranik (Migrated from github.com) commented 2022-08-03 10:37:21 +00:00

С++17 умеет тут auto? Или только если выше, в функции?

С++17 умеет тут auto? Или только если выше, в функции?
vng (Migrated from github.com) reviewed 2022-08-03 10:49:21 +00:00
vng (Migrated from github.com) commented 2022-08-03 10:49:21 +00:00

Это не мой коммент, тут остается без изменений.

Это не мой коммент, тут остается без изменений.
vng (Migrated from github.com) reviewed 2022-08-03 10:53:48 +00:00
vng (Migrated from github.com) commented 2022-08-03 10:53:48 +00:00

Здесь не про это. Тут все магазины, но без фикса по запросу "rewe", магазин "REWE City" будет далеко внизу даже если он рядом, потому что все забьет точный матчинг из магазинов с именем "REWE".

Здесь не про это. Тут все магазины, но без фикса по запросу "rewe", магазин "REWE City" будет далеко внизу даже если он рядом, потому что все забьет _точный_ матчинг из магазинов с именем "REWE".
vng (Migrated from github.com) reviewed 2022-08-03 10:54:47 +00:00
@ -0,0 +63,4 @@
static std::vector<uint32_t> GetClassifTypes(std::vector<base::StringIL> const & arr)
{
std::vector<uint32_t> res;
vng (Migrated from github.com) commented 2022-08-03 10:54:46 +00:00

auto res; И выводит тип из конструкции return? Сомневаюсь :)

auto res; И выводит тип из конструкции return? Сомневаюсь :)
vng commented 2022-08-03 10:56:23 +00:00 (Migrated from github.com)

Я тесты только добавил и буду запускать каким-то скриптом после генерации данных вместе с routing_integration_tests.

Я тесты только добавил и буду запускать каким-то скриптом после генерации данных вместе с routing_integration_tests.
biodranik (Migrated from github.com) reviewed 2022-08-03 20:25:51 +00:00
@ -0,0 +63,4 @@
static std::vector<uint32_t> GetClassifTypes(std::vector<base::StringIL> const & arr)
{
std::vector<uint32_t> res;
biodranik (Migrated from github.com) commented 2022-08-03 20:25:51 +00:00

Да, только наоборот можно.

Да, только наоборот можно.
This repo is archived. You cannot comment on pull requests.
No labels
Accessibility
Accessibility
Address
Address
Android
Android
Android Auto
Android Auto
Android Automotive (AAOS)
Android Automotive (AAOS)
API
API
AppGallery
AppGallery
AppStore
AppStore
Battery and Performance
Battery and Performance
Blocker
Blocker
Bookmarks and Tracks
Bookmarks and Tracks
Borders
Borders
Bug
Bug
Build
Build
CarPlay
CarPlay
Classificator
Classificator
Community
Community
Core
Core
CrashReports
CrashReports
Cycling
Cycling
Desktop
Desktop
DevEx
DevEx
DevOps
DevOps
dev_sandbox
dev_sandbox
Directions
Directions
Documentation
Documentation
Downloader
Downloader
Drape
Drape
Driving
Driving
Duplicate
Duplicate
Editor
Editor
Elevation
Elevation
Enhancement
Enhancement
Epic
Epic
External Map Datasets
External Map Datasets
F-Droid
F-Droid
Fonts
Fonts
Frequently User Reported
Frequently User Reported
Fund
Fund
Generator
Generator
Good first issue
Good first issue
Google Play
Google Play
GPS
GPS
GSoC
GSoC
iCloud
iCloud
Icons
Icons
iOS
iOS
Legal
Legal
Linux Desktop
Linux Desktop
Linux packaging
Linux packaging
Linux Phone
Linux Phone
Mac OS
Mac OS
Map Data
Map Data
Metro
Metro
Navigation
Navigation
Need Feedback
Need Feedback
Night Mode
Night Mode
NLnet 2024-06-281
NLnet 2024-06-281
No Feature Parity
No Feature Parity
Opening Hours
Opening Hours
Outdoors
Outdoors
POI Info
POI Info
Privacy
Privacy
Public Transport
Public Transport
Raw Idea
Raw Idea
Refactoring
Refactoring
Regional
Regional
Regression
Regression
Releases
Releases
RoboTest
RoboTest
Route Planning
Route Planning
Routing
Routing
Ruler
Ruler
Search
Search
Security
Security
Styles
Styles
Tests
Tests
Track Recording
Track Recording
Translations
Translations
TTS
TTS
UI
UI
UX
UX
Walk Navigation
Walk Navigation
Watches
Watches
Web
Web
Wikipedia
Wikipedia
Windows
Windows
Won't fix
Won't fix
World Map
World Map
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: organicmaps/organicmaps-tmp#3035
No description provided.