MCPcopy Create free account
hub / github.com/comaps/comaps / IsCategorialRequestFuzzy

Function IsCategorialRequestFuzzy

libs/search/utils.cpp:72–112  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

70}
71
72bool IsCategorialRequestFuzzy(std::string const & query, std::string const & categoryName)
73{
74 auto const & catHolder = GetDefaultCategories();
75 auto const types = GetCategoryTypes(categoryName, "en", catHolder);
76
77 auto const queryTokens = NormalizeAndTokenizeString(query);
78
79 bool isCategorialRequest = false;
80 for (auto const type : types)
81 {
82 if (isCategorialRequest)
83 return true;
84
85 catHolder.ForEachNameByType(type, [&](CategoriesHolder::Category::Name const & categorySynonym)
86 {
87 if (isCategorialRequest)
88 return;
89
90 auto const categoryTokens = NormalizeAndTokenizeString(categorySynonym.m_name);
91 for (size_t start = 0; start < queryTokens.size(); ++start)
92 {
93 bool found = true;
94 for (size_t i = 0; i < categoryTokens.size() && start + i < queryTokens.size(); ++i)
95 {
96 if (queryTokens[start + i] != categoryTokens[i])
97 {
98 found = false;
99 break;
100 }
101 }
102 if (found)
103 {
104 isCategorialRequest = true;
105 break;
106 }
107 }
108 });
109 }
110
111 return isCategorialRequest;
112}
113} // namespace search

Callers 1

UNIT_TESTFunction · 0.85

Calls 4

ForEachNameByTypeMethod · 0.80
GetCategoryTypesFunction · 0.70
sizeMethod · 0.45

Tested by 1

UNIT_TESTFunction · 0.68