Как-то по­на­до­би­лась мне для ре­а­ли­за­ции идеи по оп­ти­миза­ции вы­да­чи по­ис­ковых запро­сов на сайте од­но­го ла­ба­за сло­варь си­но­ни­мов рус­ско­го язы­ка в ви­де mysql или sqlite ба­зы дан­ных. Гугл по запро­сам вы­да­вал лишь б-го­мерз­кие сайты аля пла­ти.ру и про­чую ком­мер­че­скую ху­и­ту, где эти ба­зы дан­ных мож­но бы­ло ска­чать, от­пра­вив смс-ку на ко­то­роткий но­мер сто­и­мо­стью под 15 бак­сов. Из-за ге­не­ти­че­ско­го инстинк­та жад­но­сти, пла­тить ба­ры­гам не хо­те­лось. И в то же вре­мя в ин­тер­не­тах бы­ли найде­ны де­сят­ки сло­ва­рей в фор­ма­те txt, ко­то­рые я и ре­шил разобрать в mysql. Про­цесс длил­ся ни много не ма­ло - це­лые сут­ки, в ре­зульта­те по­лу­чи­лась mysql ба­за дан­ных на 193409 слов и раз­ме­ром sql файла на 11 с лиш­ним ме­га­байт. Ска­чать ре­зультат в сдав­лен­ном zip-ом ви­де мож­но вот тут: rus_synonyms_mysql.zip (~3,3 mb). Па­ру слов о том, как ис­поль­зо­вать. Для на­ча­ла по­лу­ча­е­те id сло­ва запро­сом SELECT id FROM words WHERE word='Про­фит'. По­сле это­го по­лу­ча­ем спи­сок си­но­ни­мов SELECT w_id, s_id FROM synonyms WHERE w_id='1234' or s_id='1234'. Сор­ти­ру­ем по­вто­ря­ю­щи­е­ся зна­че­ния и за­би­ра­ем сло­ва-си­но­ни­мы SELECT word FROM words WHERE id IN (1,2,3,4,5 ...). Ум­ные дядь­ки объеди­нят все запро­сы в один большой и бу­дут счаст­ли­вы. Да, сло­ва "хуй" (3991 си­но­ним) и "Ле­нин" (10 си­но­ни­мов) в ба­зе име­ют­ся.