{"action":"created","comment":{"url":"https://api.github.com/repos/mapsme/omim/pulls/comments/70403007","id":70403007,"diff_hunk":"@@ -0,0 +1,97 @@\n+#include \"generator/booking_scoring.hpp\"\n+\n+#include \"generator/booking_dataset.hpp\"\n+\n+#include \"indexer/search_string_utils.hpp\"\n+#include \"indexer/search_delimiters.hpp\"\n+\n+#include \"geometry/distance_on_sphere.hpp\"\n+\n+#include \"base/collection_cast.hpp\"\n+\n+namespace generator\n+{\n+namespace booking_scoring\n+{\n+namespace\n+{\n+// Calculated with tools/python/booking_hotels_quality.py.\n+double constexpr kOptimalThreshold = 0.151001;\n+\n+template <typename T, typename U>\n+struct decay_equiv :\n+    std::is_same<typename std::decay<T>::type, U>::type\n+{};\n+\n+set<strings::UniString> StringToSetOfWords(string const & str)\n+{\n+  vector<strings::UniString> result;\n+  search::NormalizeAndTokenizeString(str, result, search::Delimiters{});\n+  return my::collection_cast<set>(result);\n+}\n+\n+// TODO(mgsergio): Update existing one in base or wherever...\n+// Or just use one from boost.\n+struct CounterIterator\n+{\n+  template<typename T, typename = typename enable_if<!decay_equiv<T, CounterIterator>::value>::type>\n+  CounterIterator & operator=(T const &) { ++m_count; return *this; }\n+  CounterIterator & operator++() { return *this; }\n+  CounterIterator & operator++(int) { return *this; }\n+  CounterIterator & operator*() { return *this; }\n+  uint32_t Count() const { return m_count; }\n+\n+  uint32_t m_count = 0;\n+};\n+\n+double StringSimilarityScore(string const & a, string const & b)\n+{\n+  auto const aWords = StringToSetOfWords(a);\n+  auto const bWords = StringToSetOfWords(b);\n+\n+  auto const intersectionCard = set_intersection(begin(aWords), end(aWords),\n+                                                 begin(bWords), end(bWords),\n+                                                 CounterIterator()).Count();\n+  auto const aLikeBScore = static_cast<double>(intersectionCard) / aWords.size();","path":"generator/booking_scoring.cpp","position":55,"original_position":55,"commit_id":"88d5775c230e5ac2caa06ad2266b893b300a2211","original_commit_id":"88d5775c230e5ac2caa06ad2266b893b300a2211","user":{"login":"mpimenov","id":10366009,"avatar_url":"https://avatars.githubusercontent.com/u/10366009?v=3","gravatar_id":"","url":"https://api.github.com/users/mpimenov","html_url":"https://github.com/mpimenov","followers_url":"https://api.github.com/users/mpimenov/followers","following_url":"https://api.github.com/users/mpimenov/following{/other_user}","gists_url":"https://api.github.com/users/mpimenov/gists{/gist_id}","starred_url":"https://api.github.com/users/mpimenov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mpimenov/subscriptions","organizations_url":"https://api.github.com/users/mpimenov/orgs","repos_url":"https://api.github.com/users/mpimenov/repos","events_url":"https://api.github.com/users/mpimenov/events{/privacy}","received_events_url":"https://api.github.com/users/mpimenov/received_events","type":"User","site_admin":false},"body":"assert(!empty())","created_at":"2016-07-12T09:14:27Z","updated_at":"2016-07-12T09:14:27Z","html_url":"https://github.com/mapsme/omim/pull/3761#discussion_r70403007","pull_request_url":"https://api.github.com/repos/mapsme/omim/pulls/3761","_links":{"self":{"href":"https://api.github.com/repos/mapsme/omim/pulls/comments/70403007"},"html":{"href":"https://github.com/mapsme/omim/pull/3761#discussion_r70403007"},"pull_request":{"href":"https://api.github.com/repos/mapsme/omim/pulls/3761"}}},"pull_request":{"url":"https://api.github.com/repos/mapsme/omim/pulls/3761","id":77073667,"html_url":"https://github.com/mapsme/omim/pull/3761","diff_url":"https://github.com/mapsme/omim/pull/3761.diff","patch_url":"https://github.com/mapsme/omim/pull/3761.patch","issue_url":"https://api.github.com/repos/mapsme/omim/issues/3761","number":3761,"state":"open","locked":false,"title":"[booking] Booking name matching","user":{"login":"mgsergio","id":6658987,"avatar_url":"https://avatars.githubusercontent.com/u/6658987?v=3","gravatar_id":"","url":"https://api.github.com/users/mgsergio","html_url":"https://github.com/mgsergio","followers_url":"https://api.github.com/users/mgsergio/followers","following_url":"https://api.github.com/users/mgsergio/following{/other_user}","gists_url":"https://api.github.com/users/mgsergio/gists{/gist_id}","starred_url":"https://api.github.com/users/mgsergio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mgsergio/subscriptions","organizations_url":"https://api.github.com/users/mgsergio/orgs","repos_url":"https://api.github.com/users/mgsergio/repos","events_url":"https://api.github.com/users/mgsergio/events{/privacy}","received_events_url":"https://api.github.com/users/mgsergio/received_events","type":"User","site_admin":false},"body":"@ygorshenin \r\n@burivuh \r\n@mpimenov ","created_at":"2016-07-12T07:34:04Z","updated_at":"2016-07-12T09:14:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6fabcd4a296f1b7b245d22b3ed41bd8c3e3df5e8","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/mapsme/omim/pulls/3761/commits","review_comments_url":"https://api.github.com/repos/mapsme/omim/pulls/3761/comments","review_comment_url":"https://api.github.com/repos/mapsme/omim/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mapsme/omim/issues/3761/comments","statuses_url":"https://api.github.com/repos/mapsme/omim/statuses/88d5775c230e5ac2caa06ad2266b893b300a2211","head":{"label":"mgsergio:booking-name-matching","ref":"booking-name-matching","sha":"88d5775c230e5ac2caa06ad2266b893b300a2211","user":{"login":"mgsergio","id":6658987,"avatar_url":"https://avatars.githubusercontent.com/u/6658987?v=3","gravatar_id":"","url":"https://api.github.com/users/mgsergio","html_url":"https://github.com/mgsergio","followers_url":"https://api.github.com/users/mgsergio/followers","following_url":"https://api.github.com/users/mgsergio/following{/other_user}","gists_url":"https://api.github.com/users/mgsergio/gists{/gist_id}","starred_url":"https://api.github.com/users/mgsergio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mgsergio/subscriptions","organizations_url":"https://api.github.com/users/mgsergio/orgs","repos_url":"https://api.github.com/users/mgsergio/repos","events_url":"https://api.github.com/users/mgsergio/events{/privacy}","received_events_url":"https://api.github.com/users/mgsergio/received_events","type":"User","site_admin":false},"repo":{"id":43430406,"name":"omim","full_name":"mgsergio/omim","owner":{"login":"mgsergio","id":6658987,"avatar_url":"https://avatars.githubusercontent.com/u/6658987?v=3","gravatar_id":"","url":"https://api.github.com/users/mgsergio","html_url":"https://github.com/mgsergio","followers_url":"https://api.github.com/users/mgsergio/followers","following_url":"https://api.github.com/users/mgsergio/following{/other_user}","gists_url":"https://api.github.com/users/mgsergio/gists{/gist_id}","starred_url":"https://api.github.com/users/mgsergio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mgsergio/subscriptions","organizations_url":"https://api.github.com/users/mgsergio/orgs","repos_url":"https://api.github.com/users/mgsergio/repos","events_url":"https://api.github.com/users/mgsergio/events{/privacy}","received_events_url":"https://api.github.com/users/mgsergio/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mgsergio/omim","description":"MAPS.ME - Offline OpenStreetMap maps for iOS/Android/Mac/Linux/Windows","fork":true,"url":"https://api.github.com/repos/mgsergio/omim","forks_url":"https://api.github.com/repos/mgsergio/omim/forks","keys_url":"https://api.github.com/repos/mgsergio/omim/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mgsergio/omim/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mgsergio/omim/teams","hooks_url":"https://api.github.com/repos/mgsergio/omim/hooks","issue_events_url":"https://api.github.com/repos/mgsergio/omim/issues/events{/number}","events_url":"https://api.github.com/repos/mgsergio/omim/events","assignees_url":"https://api.github.com/repos/mgsergio/omim/assignees{/user}","branches_url":"https://api.github.com/repos/mgsergio/omim/branches{/branch}","tags_url":"https://api.github.com/repos/mgsergio/omim/tags","blobs_url":"https://api.github.com/repos/mgsergio/omim/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mgsergio/omim/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mgsergio/omim/git/refs{/sha}","trees_url":"https://api.github.com/repos/mgsergio/omim/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mgsergio/omim/statuses/{sha}","languages_url":"https://api.github.com/repos/mgsergio/omim/languages","stargazers_url":"https://api.github.com/repos/mgsergio/omim/stargazers","contributors_url":"https://api.github.com/repos/mgsergio/omim/contributors","subscribers_url":"https://api.github.com/repos/mgsergio/omim/subscribers","subscription_url":"https://api.github.com/repos/mgsergio/omim/subscription","commits_url":"https://api.github.com/repos/mgsergio/omim/commits{/sha}","git_commits_url":"https://api.github.com/repos/mgsergio/omim/git/commits{/sha}","comments_url":"https://api.github.com/repos/mgsergio/omim/comments{/number}","issue_comment_url":"https://api.github.com/repos/mgsergio/omim/issues/comments{/number}","contents_url":"https://api.github.com/repos/mgsergio/omim/contents/{+path}","compare_url":"https://api.github.com/repos/mgsergio/omim/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mgsergio/omim/merges","archive_url":"https://api.github.com/repos/mgsergio/omim/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mgsergio/omim/downloads","issues_url":"https://api.github.com/repos/mgsergio/omim/issues{/number}","pulls_url":"https://api.github.com/repos/mgsergio/omim/pulls{/number}","milestones_url":"https://api.github.com/repos/mgsergio/omim/milestones{/number}","notifications_url":"https://api.github.com/repos/mgsergio/omim/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mgsergio/omim/labels{/name}","releases_url":"https://api.github.com/repos/mgsergio/omim/releases{/id}","deployments_url":"https://api.github.com/repos/mgsergio/omim/deployments","created_at":"2015-09-30T11:59:31Z","updated_at":"2016-03-17T15:31:31Z","pushed_at":"2016-07-12T07:32:08Z","git_url":"git://github.com/mgsergio/omim.git","ssh_url":"git@github.com:mgsergio/omim.git","clone_url":"https://github.com/mgsergio/omim.git","svn_url":"https://github.com/mgsergio/omim","homepage":null,"size":2509951,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"mapsme:master","ref":"master","sha":"e97402290f1e181de5ba5c4cafa101faafde1b07","user":{"login":"mapsme","id":14185141,"avatar_url":"https://avatars.githubusercontent.com/u/14185141?v=3","gravatar_id":"","url":"https://api.github.com/users/mapsme","html_url":"https://github.com/mapsme","followers_url":"https://api.github.com/users/mapsme/followers","following_url":"https://api.github.com/users/mapsme/following{/other_user}","gists_url":"https://api.github.com/users/mapsme/gists{/gist_id}","starred_url":"https://api.github.com/users/mapsme/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mapsme/subscriptions","organizations_url":"https://api.github.com/users/mapsme/orgs","repos_url":"https://api.github.com/users/mapsme/repos","events_url":"https://api.github.com/users/mapsme/events{/privacy}","received_events_url":"https://api.github.com/users/mapsme/received_events","type":"Organization","site_admin":false},"repo":{"id":42798033,"name":"omim","full_name":"mapsme/omim","owner":{"login":"mapsme","id":14185141,"avatar_url":"https://avatars.githubusercontent.com/u/14185141?v=3","gravatar_id":"","url":"https://api.github.com/users/mapsme","html_url":"https://github.com/mapsme","followers_url":"https://api.github.com/users/mapsme/followers","following_url":"https://api.github.com/users/mapsme/following{/other_user}","gists_url":"https://api.github.com/users/mapsme/gists{/gist_id}","starred_url":"https://api.github.com/users/mapsme/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mapsme/subscriptions","organizations_url":"https://api.github.com/users/mapsme/orgs","repos_url":"https://api.github.com/users/mapsme/repos","events_url":"https://api.github.com/users/mapsme/events{/privacy}","received_events_url":"https://api.github.com/users/mapsme/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mapsme/omim","description":"MAPS.ME - Offline OpenStreetMap maps for iOS/Android/Mac/Linux/Windows","fork":false,"url":"https://api.github.com/repos/mapsme/omim","forks_url":"https://api.github.com/repos/mapsme/omim/forks","keys_url":"https://api.github.com/repos/mapsme/omim/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mapsme/omim/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mapsme/omim/teams","hooks_url":"https://api.github.com/repos/mapsme/omim/hooks","issue_events_url":"https://api.github.com/repos/mapsme/omim/issues/events{/number}","events_url":"https://api.github.com/repos/mapsme/omim/events","assignees_url":"https://api.github.com/repos/mapsme/omim/assignees{/user}","branches_url":"https://api.github.com/repos/mapsme/omim/branches{/branch}","tags_url":"https://api.github.com/repos/mapsme/omim/tags","blobs_url":"https://api.github.com/repos/mapsme/omim/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mapsme/omim/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mapsme/omim/git/refs{/sha}","trees_url":"https://api.github.com/repos/mapsme/omim/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mapsme/omim/statuses/{sha}","languages_url":"https://api.github.com/repos/mapsme/omim/languages","stargazers_url":"https://api.github.com/repos/mapsme/omim/stargazers","contributors_url":"https://api.github.com/repos/mapsme/omim/contributors","subscribers_url":"https://api.github.com/repos/mapsme/omim/subscribers","subscription_url":"https://api.github.com/repos/mapsme/omim/subscription","commits_url":"https://api.github.com/repos/mapsme/omim/commits{/sha}","git_commits_url":"https://api.github.com/repos/mapsme/omim/git/commits{/sha}","comments_url":"https://api.github.com/repos/mapsme/omim/comments{/number}","issue_comment_url":"https://api.github.com/repos/mapsme/omim/issues/comments{/number}","contents_url":"https://api.github.com/repos/mapsme/omim/contents/{+path}","compare_url":"https://api.github.com/repos/mapsme/omim/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mapsme/omim/merges","archive_url":"https://api.github.com/repos/mapsme/omim/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mapsme/omim/downloads","issues_url":"https://api.github.com/repos/mapsme/omim/issues{/number}","pulls_url":"https://api.github.com/repos/mapsme/omim/pulls{/number}","milestones_url":"https://api.github.com/repos/mapsme/omim/milestones{/number}","notifications_url":"https://api.github.com/repos/mapsme/omim/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mapsme/omim/labels{/name}","releases_url":"https://api.github.com/repos/mapsme/omim/releases{/id}","deployments_url":"https://api.github.com/repos/mapsme/omim/deployments","created_at":"2015-09-20T02:57:13Z","updated_at":"2016-07-11T23:27:50Z","pushed_at":"2016-07-12T08:07:09Z","git_url":"git://github.com/mapsme/omim.git","ssh_url":"git@github.com:mapsme/omim.git","clone_url":"https://github.com/mapsme/omim.git","svn_url":"https://github.com/mapsme/omim","homepage":null,"size":2643530,"stargazers_count":1849,"watchers_count":1849,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":310,"mirror_url":null,"open_issues_count":206,"forks":310,"open_issues":206,"watchers":1849,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mapsme/omim/pulls/3761"},"html":{"href":"https://github.com/mapsme/omim/pull/3761"},"issue":{"href":"https://api.github.com/repos/mapsme/omim/issues/3761"},"comments":{"href":"https://api.github.com/repos/mapsme/omim/issues/3761/comments"},"review_comments":{"href":"https://api.github.com/repos/mapsme/omim/pulls/3761/comments"},"review_comment":{"href":"https://api.github.com/repos/mapsme/omim/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mapsme/omim/pulls/3761/commits"},"statuses":{"href":"https://api.github.com/repos/mapsme/omim/statuses/88d5775c230e5ac2caa06ad2266b893b300a2211"}}}}
{"actor":{"display_login":"mpimenov"}}