· 7 years ago · Jan 09, 2019, 09:40 AM
1CREATE OR REPLACE FUNCTION city.dosearch() RETURNS void
2LANGUAGE plpgsql SECURITY DEFINER
3AS $$
4declare
5 _iter_id integer;
6begin
7 drop table if exists result;
8 drop table if exists keywords;
9 create temporary table if not exists result (id integer, type integer, name text);
10 create temporary table if not exists keywords (id serial primary key, type integer, keyword text);
11
12 insert into keywords (type, keyword) values (31 , 'заправка'),
13 (31 , 'Ð·Ð°Ð¿Ñ€Ð°Ð²Ð¾Ñ‡Ð½Ð°Ñ ÑтанциÑ'),
14 (31 , 'бензоколонка'),
15 (31 , 'автозаправка'),
16 (31 , 'Ð°Ð²Ñ‚Ð¾Ð·Ð°Ð¿Ñ€Ð°Ð²Ð¾Ñ‡Ð½Ð°Ñ ÑтанциÑ'),
17 (31 , 'агнкÑ'),
18 (31 , 'азÑ'),
19 (31 , 'Ð³Ð°Ð·Ð¾Ð·Ð°Ð¿Ñ€Ð°Ð²Ð¾Ñ‡Ð½Ð°Ñ ÑтанциÑ'),
20 (31 , 'азÑ'),
21
22 (27 , '(^| )Ñто($| )'),
23 (27 , 'авторемонт'),
24 (27 , 'автоÑервиÑ'),
25 (27 , 'автоÑтанциÑ'),
26 (27 , 'автоцентр'),
27 (27 , 'автокомплекÑ'),
28 (27 , 'автоÑпеццентр'),
29 (27 , 'автоÑалон'),
30 (27 , 'автомаÑтерÑкаÑ'),
31 (27 , 'шиномонтаж'),
32 (27 , 'авторынок'),
33 (27 , 'шиномонтаж'),
34 (27 , 'авторынок'),
35 (27 , 'автоÑтоÑнка'),
36 (27 , 'паркинг'),
37 (27 , 'парковка'),
38
39 (8 , 'автомойка'),
40 (8 , 'мойка авто'),
41 (8 , 'мойка ÑамообÑлуживаниÑ'),
42 (8 , 'автобанÑ'),
43 (8 , 'автомоечный комплекÑ'),
44 (9 , 'оптика'),
45 (8 , 'аптека'),
46 (8 , 'аптечный '),
47 (8 , 'Ð°Ð¿Ñ‚ÐµÑ‡Ð½Ð°Ñ '),
48
49 (1 , 'аÑродром'),
50 (1 , 'аÑропорт'),
51
52 (2 , 'Ñанаторий'),
53 (2 , 'Ñкопарк'),
54 (2 , 'клубный дом'),
55 (2 , 'профилакторий'),
56 (2 , 'панÑионат'),
57 (2 , 'дом отдыха'),
58 (2 , 'загородный клуб'),
59 (2 , 'туркомплекÑ'),
60 (2 , 'туриÑтичеÑкий комплекÑ'),
61 (2 , 'горнолыжный клуб'),
62
63 (10 , 'баннаÑ'),
64 (10 , 'банный'),
65 (10 , 'банÑ'),
66 (10 , 'парнаÑ'),
67 (10 , 'термальный комплекÑ'),
68 (10 , 'Ñауна'),
69
70 (32 , 'банк'),
71 (32 , 'обменник'),
72
73 (11 , 'банкомат'),
74
75 (24 , 'закуÑочнаÑ'),
76 (24 , 'кафе'),
77 (24 , 'реÑторан'),
78 (24 , 'бар'),
79 (24 , 'пельменнаÑ'),
80 (24 , 'кондитерÑкаÑ'),
81 (24 , 'харчевнÑ'),
82 (24 , 'биÑтро'),
83 (24 , 'кабак'),
84 (24 , 'тратториÑ'),
85 (24 , 'кабаре'),
86 (24 , 'трактир'),
87 (24 , 'пивбар'),
88 (24 , 'шашлычнаÑ'),
89 (24 , 'буфет'),
90 (24 , 'чебуречнаÑ'),
91 (24 , 'пекарнÑ'),
92 (24 , 'корчма'),
93 (24 , 'ÑтоловаÑ'),
94 (24 , 'банкетный зал'),
95 (24 , 'Ñпорт-бар'),
96 (24 , 'дом торжеÑтв'),
97 (24 , 'фаÑтфуд'),
98 (24 , 'кальÑннаÑ'),
99 (24 , 'центр паровых коктелей'),
100 (24 , 'лаундж-бар'),
101 (24 , 'кофейнÑ'),
102 (24 , 'шашлычка'),
103 (24 , 'блиннаÑ'),
104 (24 , 'кальÑннаÑ'),
105
106 (37 , '(^| )бц($| )'),
107 (37 , 'деловой центр'),
108 (37 , 'торгово-офиÑный центр'),
109 (37 , 'офиÑный центр'),
110 (37 , 'деловой комплекÑ'),
111 (37 , 'бизнеÑ*центр'),
112
113 (21 , 'ÑтоматологиÑ'),
114 (21 , 'медицинÑкий'),
115 (21 , 'диагноÑтичеÑкий'),
116 (21 , 'клиника'),
117 (21 , 'лечебный'),
118 (21 , 'роддом'),
119 (21 , 'родильный дом'),
120 (21 , 'перинатальный центр'),
121 (21 , 'медицинÑÐºÐ°Ñ Ð»Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð¸Ñ'),
122 (21 , 'зуботехничеÑкаÑ'),
123 (21 , 'морг'),
124 (21 , 'патологоанатомичеÑк'),
125 (21 , 'женÑÐºÐ°Ñ ÐºÐ¾Ð½ÑультациÑ'),
126 (21 , 'поликлиника'),
127 (21 , 'больница'),
128 (21 , 'мед.центр'),
129 (21 , 'род.дом'),
130 (21 , 'гоÑпиталь'),
131 (21 , 'медÑанчаÑть'),
132 (21 , 'медико*ÑанитарнаÑ*чаÑть'),
133 (21 , 'травматологичеÑкий'),
134 (21 , 'травмпункт'),
135 (21 , 'центр Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñемьи'),
136
137 (7 , 'вокзал'),
138 (7 , 'ж*д ÑтанциÑ'),
139 (7 , 'автоÑтанциÑ'),
140
141 (23 , 'отель'),
142 (23 , 'хоÑтел'),
143 (23 , 'мотель'),
144 (23 , 'гоÑтиница'),
145 (23 , 'поÑтоÑлый двор'),
146 (23 , 'гоÑтевой комплекÑ'),
147 (23 , 'апартаменты'),
148
149 (26 , 'парикмахерÑкаÑ'),
150 (26 , 'Ñалон краÑоты'),
151 (26 , 'ÑÑ‚ÑƒÐ´Ð¸Ñ Ð¼Ð°Ð½Ð¸ÐºÑŽÑ€Ð°'),
152 (26 , 'барбешоп'),
153 (26 , 'Ñпа-Ñалон'),
154 (26 , 'ÑÑ‚ÑƒÐ´Ð¸Ñ Ð·Ð°Ð³Ð°Ñ€Ð°'),
155 (26 , 'маÑÑажный Ñалон'),
156 (26 , 'коÑметолог'),
157 (26 , 'ÑолÑрий'),
158 (26 , 'маÑтерÑÐºÐ°Ñ ÐºÑ€Ð°Ñоты'),
159 (26 , 'ÑÑ‚ÑƒÐ´Ð¸Ñ ÐºÑ€Ð°Ñоты'),
160 (26 , 'имидж-ÑтудиÑ'),
161 (26 , 'ÑÑ‚ÑƒÐ´Ð¸Ñ Ð¼Ð°Ð½Ð¸ÐºÑŽÑ€Ð° и педикюра'),
162 (26 , 'Ñалон-парикмахерÑкаÑ'),
163 (26 , 'ÑÑ‚ÑƒÐ´Ð¸Ñ Ð½Ð°Ñ€Ð°Ñ‰Ð¸Ð²Ð°Ð½Ð¸Ñ'),
164
165 (22 , 'музей'),
166 (22 , 'театр'),
167 (22 , 'филармониÑ'),
168 (22 , 'концертный зал'),
169 (22 , 'выÑтавочный зал'),
170 (22 , 'дом культуры'),
171 (22 , 'дворец культуры'),
172 (22 , 'библиотека'),
173 (22 , '(^| )ДК($| )'),
174 (22 , 'ÐºÐ°Ñ€Ñ‚Ð¸Ð½Ð½Ð°Ñ Ð³Ð°Ð»ÐµÑ€ÐµÑ'),
175
176 (17 , 'гаÑтроном'),
177 (17 , 'универÑам'),
178 (17 , 'магазин'),
179 (17 , 'маркет'),
180 (17 , 'рынок'),
181 (17 , 'павильон'),
182 (17 , 'ларек'),
183
184 (29 , '(^| )метро($| )'),
185 (29 , 'подземка'),
186 (29 , 'метрополитен'),
187
188 (19 , 'турфирма'),
189 (19 , 'туроператор'),
190 (19 , 'туриÑтичеÑкаÑ'),
191 (19 , 'агенÑтво путешеÑтвий'),
192 (19 , 'турагенÑтво'),
193
194 (13 , '(^| )трк($| )'),
195 (13 , '(^| )трц($| )'),
196 (13 , '(^| )тц($| )'),
197 (13 , '(^| )тк($| )'),
198 (13 , 'молл'),
199 (13 , 'торговый центр'),
200 (13 , 'торговый комплекÑ'),
201
202 (25 , 'колледж'),
203 (25 , 'техникум'),
204 (25 , 'инÑтитут'),
205 (25 , 'универÑитет'),
206 (25 , '(^| )нии($| )'),
207 (25 , 'научно*иÑÑледовательÑкий*инÑтитут'),
208 (25 , 'конÑтрукторÑкое бюро'),
209 (25 , 'школа милиции'),
210
211 (34 , 'общага'),
212 (34 , 'общежитие'),
213
214 (30 , 'Ñквер'),
215 (30 , 'цпкио'),
216 (30 , 'пкио'),
217 (30 , 'ботаничеÑкий Ñад'),
218 (30 , '(^| )Ñад($| )'),
219
220 (36 , 'перекреÑток'),
221 (36 , 'развилка'),
222
223 (33 , 'Ð¿Ð¾Ð¶Ð°Ñ€Ð½Ð°Ñ Ñ‡Ð°Ñть'),
224 (33 , 'пожарка'),
225 (33 , '(^| )пÑч($| )'),
226 (33 , '(^| )пч($| )'),
227 (33 , '(^| )Ñпч($| )'),
228 (33 , 'Ð²Ð¾Ð´Ð½Ð°Ñ ÑтанциÑ'),
229 (33 , 'пожарно-ÑпаÑÐ°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñть'),
230 (33 , '(^| )мчÑ($| )'),
231
232 (35 , 'милициÑ'),
233 (35 , 'пункт правопорÑдка'),
234 (35 , 'учаÑтковый пункт полиции'),
235 (35 , '(^| )увд($| )'),
236 (35 , '(^| )мвд($| )'),
237 (35 , '(^| )омвд($| )'),
238 (35 , '(^| )овд($| )'),
239 (35 , '(^| )гибдд($| )'),
240 (35 , '(^| )ровд($| )'),
241 (35 , '(^| )дпÑ($| )'),
242 (35 , '(^| )Ñ„Ñб($| )'),
243 (35 , '(^| )гаи($| )'),
244 (35 , '(^| )ловд($| )'),
245 (35 , 'ÑледÑтвенный комитет'),
246 (35 , 'опорный пункт полиции'),
247 (35 , 'полициÑ'),
248 (35 , 'линейный отдел'),
249
250 (5 , '(^| )Ñнт($| )'),
251 (5 , '(^| )днт($| )'),
252 (5 , '(^| )ÑÑ‚($| )'),
253 (5 , 'Ñады'),
254 (5 , 'дачи'),
255 (5 , 'Ñадовый учаÑток'),
256 (5 , 'Ñадовое общеÑтво'),
257 (5 , 'Ñадово-дачное товарищеÑтво'),
258
259 (20 , 'тренажерный'),
260 (20 , 'Ñпортзал'),
261 (20 , 'ÑпорткомплекÑ'),
262 (20 , 'Ñпортивный центр'),
263 (20 , 'фитнеÑ'),
264 (20 , 'фитнеÑ'),
265 (20 , 'Ñпортивно'),
266 (20 , 'Ñпортклуб'),
267 (20 , 'Ñпортивный комплекÑ'),
268 (20 , 'баÑÑеин'),
269
270 (4 , 'зооцентр'),
271 (4 , 'ветеринарный'),
272 (4 , 'ветеринарнаÑ'),
273 (4 , 'зооветцентр'),
274 (4 , 'гоÑтиница Ð´Ð»Ñ Ð¶Ð¸Ð²Ð¾Ñ‚Ð½Ñ‹Ñ…'),
275 (4 , 'зооÑалон'),
276 (4 , 'кинологичеÑкий'),
277 (4 , 'питомник'),
278 (4 , 'груминг-Ñалон'),
279 (4 , 'хендлинг-зал'),
280 (4 , 'ветклиника'),
281 (4 , 'ветаптека'),
282
283 (14 , 'храм'),
284 (14 , 'Ñобор'),
285 (14 , 'приход'),
286 (14 , 'дом молитвы'),
287 (14 , '(^| )церк'),
288
289 (12 , '(^| )Ñош($| )'),
290 (12 , 'гимназиÑ'),
291 (12 , 'лицей'),
292 (12 , 'школа'),
293
294 (16 , 'мечеть'),
295
296 (41 , 'аÑродинамичеÑкий'),
297 (41 , 'квеÑÑ‚'),
298 (41 , 'боулинг'),
299 (41 , 'бильÑрд'),
300 (41 , 'пейнтбол'),
301 (41 , 'кинотеатр'),
302 (41 , 'аквапарк'),
303 (41 , 'казино'),
304 (41 , 'развлекательный'),
305 (41 , 'зоопарк'),
306 (41 , 'цирк'),
307 (41 , 'веревочный парк'),
308 (41 , 'Ñкейт-парк'),
309 (41 , 'бильÑрдный клуб'),
310 (41 , 'Ñтрайкбол'),
311 (41 , 'лазертаг'),
312
313 (15 , 'Ñинагога'),
314
315 (0,'');
316
317 for _iter_id in select (1,31,27,4,8,2,11,32,37,21,26,33,35,4,14,16,41,15,12,20,5,30,34,25,13,19,17,22,23,29,24,10,7,36) loop
318 insert into result(id,type,name) select id,_iter_id,c_addr_name as cc from city.t_address where (id_type_addr=0 or id_type_addr is null) and (id not in (select id from result)) and lower(c_addr_name) ~ any (select keyword from keywords where type=_iter_id);
319 end loop;
320end;
321$$;
322
323select city.dosearch();
324select 'update city.t_address set id_type_addr='||type||' where id='||id||' and (id_type_addr=0 or id_type_addr is null);' from result;
325drop table if exists result;
326drop table if exists keywords;