--- db/prgsrc/Attic/readme.txt 2001/10/31 03:00:10 1.1 +++ db/prgsrc/Attic/readme.txt 2001/10/31 03:07:29 1.2 @@ -1,311 +1,311 @@ - - -▌║И╗╔ А╚╝╒═ -~~~~~~~~~~~ - -▒╚╝╒╝Д╝Ю╛╝╘ АГ╗Б═╔БАО ╕═╓╜═О ╞╝А╚╔╓╝╒═Б╔╚Л╜╝АБЛ ЮЦАА╙╗Е ║Ц╙╒, ╚═Б╗╜А╙╗Е ║Ц╙╒ -╗ Ф╗ДЮ. █═╞Ю╗╛╔Ю, "┘╙═Б╔Ю╗╜═", "England", "1974", "H2O". -"H_2O", "┌╚═╓╗╒╝АБ╝╙-2000" -- МБ╝ ╞═ЮК А╚╝╒╝Ю╛. - -█═Г═╚Л╜═О Д╝Ю╛═ А╚╝╒╝Д╝Ю╛К, ╜╔ А╝АБ╝ОИ╔╘ Ф╔╚╗╙╝╛ ╗╖ -ЮЦАА╙╗Е ║Ц╙╒ -- МБ╝ А═╛═ А╚╝╒╝Д╝Ю╛═. - -░╔ё╗АБЮ ║Ц╙╒ ╞Ю╗ ╞╝╗А╙╔ ╜╔ ЦГ╗БК╒═╔БАО. - -▐╝╗А╙ ╞╝ Г═АБ╗ А╚╝╒═ ╜╔ ╞╝╓╓╔Ю╕╗╒═╔БАО. █╔ ╞╝╓╓╔Ю╕╗╒═НБАО ╗ -Ю╔ёЦ╚ОЮ╜К╔ ╒КЮ═╕╔╜╗О. - -▒╞╗А╝╙ ╜╝╒КЕ Д═╘╚╝╒, ╙╝Б╝ЮК╔ ╞╚═╜╗ЮЦ╔БАО ╞╝АБ═╒╗БЛ ╞╝╓ CVS. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -▒╚╝╒═Ю╗: - - dict.koi ▒╚╝╒═ЮЛ ─╚╔╙А═╜╓Ю═ ▀╔║╔╓╔╒═ ╓╚О ispell. - ▌║Ю═╖╝╒═╜ А╚╗О╜╗╔╛ ╒А╔Е А╚╝╒═Ю╔╘, - ╙╝Б╝ЮК╔ О А╛╝ё ╜═╘Б╗. - - mydict.koi ▒═╛╝╞═╚Л╜╝╔ ╓╝╞╝╚╜╔╜╗╔ А╚╝╒═ЮО. └╝╞ЦА╙═НБАО ╜╔╙╝Б╝ЮК╔ - ╒╝╚Л╜╝АБ╗. █═╞Ю╗╛╔Ю, ╒ ▀╔║╔╓╔╒А╙╝╛ А╚╝╒═Ю╔ - АЦИ╔АБ╒╗Б╔╚Л╜К╔ ╒Б╝Ю╝ё╝ А╙╚╝╜╔╜╗О, ╙═╙ ╞Ю═╒╗╚╝, - ╞╝╛╔Г╔╜К ╙╚НГ╔╛ "K" ╗╚╗, ╔А╚╗ ╝╜╗ ╜╔ ╗╛╔НБ Д╝Ю╛К - ╛╜╝╕╔АБ╒╔╜╜╝ё╝ Г╗А╚═ - ╙╚НГЯ╛ "J". ┌ mydict.koi - ╒А╔ Б═╙╗╔ АЦИ╔АБ╒╗Б╔╚Л╜К╔ ╞╝╞═╓═НБ А ╙╚НГЯ╛ "K". - - - ndict.koi ─╒Б╝╛═Б╗Г╔А╙╗ Аё╔╜╔Ю╗Ю╝╒═╜╜К╘ ╓╝╞╝╚╜╗Б╔╚Л╜К╘ А╚╝╒═ЮЛ. - ▐Ю╗╛╔Ю: ╒ dict.koi ╜╔Б А╚╝╒═ "²╘╓╔╚Л╛═╜", - ═ ╒ ║═╖╔ ╒АБЮ╔Г═НБАО А╚╝╒╝Д╝Ю╛К "²╘╓╔╚Л╛═╜" - ╗ "²╘╓╔╚Л╛═╜═". ▒╙Ю╗╞Б, ╝║╜═ЮЦ╕╗╒ МБ╝, - ╞╝╜О╚, ГБ╝ МБ╝ ╛╝ёЦБ ║КБЛ Д╝Ю╛К АЦИ╔АБ╒╗Б╔╚Л╜╝ё╝ - ╕╔╜А╙╝ё╝ Ю╝╓═ "²╘╓╔╚Л╛═╜═" ("²╘╓╔╚Л╛═╜" -- Д╝Ю╛═ - Ю╝╓╗Б╔╚Л╜╝ё╝ ╞═╓╔╕═ ╛╜╝╕╔АБ╒╔╜╜╝ё╝ Г╗А╚═), ╗ ╓╝╞╝╚╜╗╚ - ╔Н А╚╝╒═ЮЛ. - - - raff.koi ▓═║╚╗Ф═ ═ДД╗╙А╝╒ ╙ А╚╝╒═ЮН ▀╔║╔╓╔╒═. - -▒╙Ю╗╞БК: - - makecheck.pl ▐╝ Б═║╚╗Ф╔ ═ДД╗╙А╝╒ ё╔╜╔Ю╗ЮЦ╔Б Б╔╙АБ ДЦ╜╙Ф╗╗, - ╗ИЦИ╔╘ ╜═Г═╚Л╜ЦН Д╝Ю╛Ц А╚╝╒╝Д╝Ю╛К. - - mkRS.pl ▐╔Ю╔А╝╖╓═ЯБ ╞╝╗А╙╝╒К╔ Б═║╚╗ФК ╗ ╝║╜Ц╚О╔Б ╞╝╚╔ - ProcessedBySeacrh Ц ╒А╔Е ╒╝╞Ю╝А╝╒. - - updateRS.pl ┬И╔Б ╒╝╞Ю╝АК А ╜Ц╚╔╒К╛ ProcessedBySearch - ╗ ╓╝║═╒╚О╔Б ╗╜Д╝Ю╛═Ф╗Н ╝ ╜╗Е ╒ Б═║╚╗ФК. - ░═║╝Б═╔Б ╝Г╔╜Л ╛╔╓╚╔╜╜╝ (╝╙╝╚╝ А╔╙Ц╜╓К ╜═ ╒╝╞Ю╝А ╜═ - AMD-400), ╜═Г╗╜═╔Б ╝║Ю═║═БК╒═БЛ А╚╔╓ЦНИ╗╘ ╗╘ ╒╝╞Ю╝А - Б╝╚Л╙╝ ╞╝А╚╔ Б╝ё╝, ╙═╙ ╒ ║═╖╔ ╞╝О╒╗╚═АЛ ╗╜Д╝Ю╛═Ф╗О ╝ - ╞Ю╔╓К╓ЦИ╔╛. ┌ Ю╔╖Ц╚ЛБ═Б╔ ╛╝╕╔Б ║КБЛ ╒ ╚Н║╝╘ ╛╝╛╔╜Б ╞Ю╔Ю╒═╜ - ║╔╖ ЦИ╔Ю║═ ╓╚О Б═║╚╗Ф. - - updateRS1.pl └╔╚═╔Б Б╝╕╔ А═╛╝╔, ГБ╝ updateRS.pl, ╜╝ ╝║Ю═║═БК╒═╔Б ╒╝╞Ю╝АК - ╞╝ЮФ╗О╛╗, ╖═╞╗АК╒═О ╗╜Д╝Ю╛═Ф╗Н ╒ ╞═╛ОБЛ, А╙╗╓К╒═О - ╗╜Д╝Ю╛═Ф╗Н ╒ ║═╖Ц Б╝╚Л╙╝ ╞╝А╚╔ Б╝ё╝, ╙═╙ ╞╝ЮФ╗О - ║Ц╓╔Б ╞╝╚╜╝АБЛН ╝║Ю═║╝Б═╜═. ▌╞Б╗╛═╚Л╜К╘ Ю═╖╛╔Ю ╞╝ЮФ╗╗ - ╖═╒╗А╗Б ╝Б ╛╝И╜╝АБ╗ ╛═Х╗╜К. - - dumpRS.pl ▒╙╗╓К╒═╔Б ╒ Д═╘╚ ╓═╛╞ Б═║╚╗ФК word2question. - - dumpin2out.pl ▒╙╗╓К╒═╔Б ╒ Д═╘╚ Б═║╚╗ФЦ А╝╝Б╒╔БАБ╒╗╘ - ╗╓╔╜Б╗Д╗╙═Б╝Ю ╒╝╞Ю╝А═ ╒ ║═╖╔ -> ╒╜╔Х╜╔╔ ╗╛О - (▓ЦЮ╜╗Ю.▓ЦЮ.█╝╛╔Ю). - - dump2dump.pl ▐Ю╔╝║Ю═╖Ц╔Б ╓═╛╞ Б═║╚╗ФК word2question - ╞╝╓ ╓ЮЦёЦН ╖═╚╗╒╙Ц ║═╖К, ╗А╞╝╚Л╖ЦО Б═║╚╗ФК - А╝╝Б╒╔БАБ╒╗╘ ╓╒ЦЕ ╖═╚╗╒╝╙. ▒ЦБЛ ╒ Б╝╛, ГБ╝ - ╞Ю╗ ╞╔Ю╔╖═╚╗╒╙╔ ║═╖К ╗╖╛╔╜ОНБАО ╗╓╔╜Б╗Д╗╙═Б╝ЮК - ╒╝╞Ю╝А╝╒. ┬А╞╝╚Л╖╝╒═╜╗╔ МБ╝ё╝ А╙Ю╗╞Б═ ╞╝╖╒╝╚О╔Б ╗╖║╔╕═БЛ - ╖═╞ЦА╙═ "╓╝╚ё╗Е" А╙Ю╗╞Б╝╒ updateRS.pl ╗ updateRS1.pl - ┼Ю╝╛╔ Б╝ё╝, А╙Ю╗╞Б ╛╝╕╔Б ╗А╞╝╚Л╖╝╒═БЛАО ╞Ю╗ ╞╔Ю╔╜╝А╔ Б═║╚╗Ф, - ╜═╞Ю╗╛╔Ю, А ║╗╚Л║╝ ╜═ ╙Ц╚╗Г╙╗. - - delRS ⌠╓═╚О╔Б ╗╖ ╓═╛╞═ Б═║╚╗ФК word2question ╗╜Д╝Ю╛═Ф╗Н ╝ - ╒╝╞Ю╝А═Е, А╝╝Б╒╔БАБ╒ЦНИ╗Е Ц╙═╖═╜╜К╛ Д═╘╚═╛. - - checkPBS.pl ▐Ю╝АБ═╒╚О╔Б ╞╝╚╔ ProcessedBySearch ╜═ ╝А╜╝╒═╜╗╗ - ╗╜Д╝Ю╛═Ф╗╗ ╗╖ Б═║╚╗ФК word2question - - -┌А╞╝╛╝ё═Б╔╚Л╜К╔ Д═╘╚К: - - chgk.cnf ┼╝╜Д╗ёЦЮ═Ф╗╝╜╜К╘ Д═╘╚. - - chgkfiles.pm ▄╝╓Ц╚Л ╓╚О Ю═║╝БК c Д═╘╚═╛╗ - - dbchgk ▄╝╓Ц╚Л ╓╚О Ю═║╝БК А ║═╖╝╘ - - - - -▒Б═╜╓═ЮБ╜К╔ ╞Ю╝Ф╔╓ЦЮК -~~~~~~~~~~~~~~~~~~~~~ - -▐╝╚╜═О ╖═╚╗╒╙═ - - ┤═╞ЦАБ╗БЛ mkRS.pl, ╖═Б╔╛ updateRS.pl ╗ ╞╝╓╝╕╓═БЛ АЦБ╙╗ ╗╚╗ ║╝╚ЛХ╔. - ┌╛╔АБ╝ updateRS.pl ╛╝╕╜╝ ╗А╞╝╚Л╖╝╒═БЛ updateRS1.pl, Б╝ё╓═ ║Ц╓╔Б ╞╝║КАБЮ╔╔, - ╜╝ ╒АЯ Ю═╒╜╝ ╓╝╒╝╚Л╜╝ ╓╝╚ё╝. - - -▐╔Ю╔╜╝А Б═║╚╗Ф ╜═ ╓ЮЦёЦН ╛═Х╗╜Ц - - █═ ╞╔Ю╒╝╘ ╛═Х╗╜╔: - dumpRS.pl dump1 - dumpin2out.pl first - - ┤═Б╔╛ ╖═╚╗БЛ dump1 ╗ first ╜═ ╒Б╝ЮЦН ╛═Х╗╜Ц ╗ Ц╕╔ Б═╛: - dumpin2out.pl second - dump2dump.pl dump1 dump2 first second - loaddump second - - ┌А╔ А╝╖╓═╜╜К╔ Д═╘╚К ╛╝╕╜╝ Ц╓═╚╗БЛ. - -└╝║═╒╚╔╜╗╔ ╒ ║═╖Ц ╜╝╒КЕ Д═╘╚╝╒ - - └╝║═╒╗БЛ Д═╘╚К А╙Ю╗╞Б╝╛ updatedb.pl ╗ ╖═╞ЦАБ╗БЛ updateRS.pl. - ²Б╝Б А╙Ю╗╞Б ё╔╜╔Ю╗ЮЦ╔Б А╞╗А╝╙ ╜╔Ю═А╞╝╖╜═╜╜КЕ А╚╝╒. - ┬Е ╜═Г═╚Л╜К╔ Д╝Ю╛К ╛╝╕╜╝ ╓╝║═╒╗БЛ ╒ А╚╝╒═ЮЛ mydict.koi. - - ┌ ╞Ю╗╜Ф╗╞╔, МБЦ ╞Ю╝Ф╔╓ЦЮЦ Е╝Ю╝Х╝ ║К ╓╔╚═БЛ ╞╔Ю╔╓ ╖═╚╗╒╙╝╘ (╞Ю╝╒╔Ю╗╒ - Б╔╙АБ╝╒К╔ Д═╘╚К), ╜╝ ╒╝-╞╔Ю╒КЕ А╙Ю╗╞Б═ ╓╚О ╞Ю╝╒╔Ю╙╗ Д═╘╚╝╒ ╞╝╙═ ╜╔Б - (╞╝Б╝╛Ц ╙═╙ О Б╝╚Л╙╝ А╔╘Г═А ╔ё╝ ╞Ю╗╓Ц╛═╚), ═ ╒╝-╒Б╝ЮКЕ ЦБО╕╔╚╗Б - ╞Ю╝Ф╔АА ═╞╓╔╘Б═. ▀ЦГХ╔ ╗╚╗ ╗╜╝ё╓═ (Ю═╖ ╒ ╜╔А╙╝╚Л╙╝ ╛╔АОФ╔╒) ╓╔╚═БЛ ╞╝╚╜ЦН - ╞╔Ю╔╗╜╓╔╙А═Ф╗Н, ╗╚╗ А╝ЕЮ═╜╗╒ А╞╗А╝╙ ╜╝╒КЕ Д═╘╚╝╒, Ю═╖ ╒ Б╔ ╕╔ А═╛К╔ - ╜╔А╙╝╚Л╙╝ ╛╔АОФ╔╒ ╞Ю╝╓╔╚К╒═БЛ ╞Ю╝Ф╔╓ЦЮЦ Ц╓═╚╗БЛ-╓╝║═╒╗БЛ. - - - -┬А╞Ю═╒╚╔╜╗╔ АЦИ╔АБ╒ЦНИ╗Е Д═╘╚╝╒ - - ▐╔Ю╔╓ Ц╓═╚╔╜╗╔╛ АБ═Ю╝╘ ║═╖К: - dumpRS.pl temp - delRS temp А╞╗А╝╙ Ц╓═╚Я╜╜КЕ ╗╚╗ ╗А╞Ю═╒╚╔╜╜КЕ Д═╘╚╝╒ - - ▐╝А╚╔ ╖═╚╗╒╙╗ Б═║╚╗Ф Questions ╗ Tournaments: - loaddump.pl temp - rm temp - updateRS.pl - - -┐╔╜╔Ю═Ф╗О ╓╝╞╝╚╜╗Б╔╚Л╜╝ё╝ А╚╝╒═ЮО -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -─╒Б╝╛═Б╗Г╔А╙╗ Аё╔╜╔Ю╗Ю╝╒═╜╜К╘ ═╒Б╝╛═Б╗Г╔А╙╗╘ А╚╝╒═ЮЛ -╜Ц╕╔╜ ╓╚О ╝║Ю═║╝Б╙╗ А╚╝╒, ╙╝Б╝ЮКЕ ╜╔Б ╒ АБ═╜╓═ЮБ╜╝╛ А╚╝╒═Ю╔, -╜╝ ╙╝Б╝ЮК╔ ╒АБЮ╔Г═НБАО ╒ ║═╖╔, ╞Ю╗ГЯ╛ ╒ Ю═╖╜КЕ Д╝Ю╛═Е. -┌ ╝А╜╝╒╜╝╛, МБ╝ ╗╛╔╜═ А╝║АБ╒╔╜╜К╔. ░═║╝Б═ МБ╝ ╝╓╜╝Ю═╖╝╒═О, -╝╜═ ╞Ю╝╓╔╚═╜═, ╞╝Б╝╛Ц А╙Ю╗╞БК ╜╔ ╒К╙╚═╓К╒═Н. - -1. ▒╓╔╚═╚╗ ╞╝╚╜К╘ А╞╗А╝╙ ЮЦАА╙╗Е А╚╝╒╝Д╝Ю╛, ╒АБЮ╔Г═НИ╗ЕАО ╒ ║═╖╔. - -2. ▐Ю╝╒╔Ю╗╚╗ ╙═╕╓ЦН А╚╝╒╝Д╝Ю╛Ц, ╗А╞╝╚Л╖ЦО ╝А╜╝╒╜К╔ А╚╝╒═Ю╗, -╞╝╚ЦГ╗╚╗ А╞╗А╝╙ ╜╔╝╞╝╖╜═╜╜КЕ А╚╝╒╝Д╝Ю╛ - -3. ▐╝АБЮ╝╗╚╗ ёЮ═Д, ╒╔ЮХ╗╜К ╙╝Б╝Ю╝ё╝ -- ╜╔╝╞╝╖╜═╜╜К╔ А╚╝╒╝Д╝Ю╛К (╝╙╝╚╝ 70000), -═ ЮЯ║Ю╝ ╔АБЛ ╒ Б╝╛ ╗ Б╝╚Л╙╝ Б╝╛ А╚ЦГ═╔, ╙╝ё╓═ ╝╓╜═ А╚╝╒╝Д╝Ю╛═ -╛╝╕╔Б О╒╚ОБЛАО ╜═╚Л╜╝╘ Д╝Ю╛╝╘ ╓ЮЦё╝╘. - -4. ░═╖║╗╚╗ ёЮ═Д ╜═ ╙╝╛╞╝╜╔╜БК А╒О╖╜╝АБ╗, ╒ ╙═╕╓╝╘ ╞╝╞КБ╒╚╗АЛ -╜═╘Б╗ А╚╝╒╝Д╝Ю╛Ц, ╙╝Б╝Ю═О ╛╝╕╔Б ║КБЛ ╜═Г═╚Л╜╝╘ Д╝Ю╛╝╘ ╒А╔Е ╝АБ═╚Л╜КЕ. -┘А╚╗ Б═╙═О ╜═Х╚═АЛ -- ╓╝║═╒╗╚╗ ╔Я ╒ ╓╝╞╝╚╜╗Б╔╚Л╜К╘ А╚╝╒═ЮЛ. - -┌ Ю╔╖Ц╚ЛБ═Б╔ Ю═║╝БК МБ╝ё╝ ═╚ё╝Ю╗Б╛═ ╝║Ю═╖╝╒═╚╗АЛ ╓╝╞А╚╝╒═ЮЛ (╝╙╝╚╝ 7000 -╜═Г═╚Л╜КЕ Д╝Ю╛) ╗ А╞╗А╝╙ Б═╙ ╗ ╜╔╝╞╝╖╜═╜╜КЕ А╚╝╒╝Д╝Ю╛ (╗Е ╝АБ═╚╝АЛ -╝╙╝╚╝ 40000). │╝╚ЛХ═О Г═АБЛ МБ╗Е А╚╝╒ -- ╝ЮД╝ёЮ═Д╗Г╔А╙╗╔ ╝Х╗║╙╗. ▌Г╔╜Л -╛╜╝ё╝ ╗╖ ╜╗Е ╞╝╚ЦГ╗╚╗АЛ ╗╖-╖═ Б╝ё╝, ГБ╝ ╒ ╜╔╙╝Б╝ЮКЕ Д═╘╚═Е ╒ ЮЦАА╙╗Е -А╚╝╒═Е ╒АБЮ╔Г═НБАО ╚═Б╗╜А╙╗╔ ║Ц╙╒К, А╝╒╞═╓═НИ╗╔ ╞╝ ╜═Г╔ЮБ═╜╗Н А ЮЦАА╙╗╛╗. - -└╚О ╒А╔╝║И╔╘ ё═Ю╛╝╜╗╗ ╜╔╝║Е╝╓╗╛╝ А╓╔╚═БЛ А╚╔╓ЦНИ╔╔: - -1. ┬А╞Ю═╒╗БЛ ╝ЮД╝ёЮ═Д╗Г╔А╙╗╔ ╝Х╗║╙╗ -2. ▐Ю╝╒╔Ю╗БЛ ╗ ╗А╞Ю═╒╗БЛ ═╒Б╝╛═Б╗Г╔А╙╗ Аё╔╜╔Ю╗Ю╝╒═╜╜К╔ ╜═Г═╚Л╜К╔ Д╝Ю╛К. -3. └╝║═╒╗БЛ ╒ А╚╝╒═ЮЛ ╞╝ГЯ╛ ╖ЮО ╜╔ ╝╞╝╖╜═╜╜К╔ А╚╝╒╝Д╝Ю╛К. - -┌Б╝ЮК╛ ╗ БЮ╔БЛ╗╛ ╞Ц╜╙Б═╛╗ О ╗╜╝ё╓═ ╛╔╓╚╔╜╜╝ ╗ ╞╔Г═╚Л╜╝ ╖═╜╗╛═НАЛ. - - -▒БЮЦ╙БЦЮ═ Б═║╚╗Ф ╓╚О ЮЦАА╙╝ё╝ ╞╝╗А╙═ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -▓═║╚╗Ф═ nf. ┌ МБ╝╘ Б═║╚╗Ф╔ ╕╗╒ЦБ А╞╗А╝╙ ╜═Г═╚Л╜К╔ Д╝Ю╛К. - - ▐╝╚О: - - id INT UNSIGNED - ╗╓╔╜Б╗Д╗╙═Б╝Ю ╜═Г═╚Л╜╝╘ Д╝Ю╛К - word CHAR(30) - А═╛═ ╜═Г═╚Л╜═О Д╝Ю╛═, ╖═╞╗А═╜╜═О - ╖═ё╚═╒╜К╛╗ ЮЦАА╙╗╛╗ ║Ц╙╒═╛╗. - flag CHAR(5) - А╞╗А╝╙ Д╚═ё╝╒ Б═║╚╗ФК ═ДД╗╙А╝╒ - number - ╙╝╚╗Г╔АБ╒╝ ╒Е╝╕╓╔╜╗╘ Д╝Ю╛ ╓═╜╜╝╘ ╜═Г═╚Л╜╝╘ - Д╝Ю╛К ╒ ╒╝╞Ю╝АК - -▓═║╚╗Ф═ nests. ┌ МБ╝╘ Б═║╚╗Ф╔ ╕╗╒ЦБ ╞═ЮК А╝╝Б╒╔БАБ╒╗╘ А╚╝╒╝Д╝Ю╛═ - - ╜═Г═╚Л╜═О Д╝Ю╛═. ▌╓╜╝╘ А╚╝╒╝Д╝Ю╛╔ ╛╝ёЦБ А╝╝Б╒╔БАБ╒╝╒═БЛ ╜╔А╙╝╚Л╙╝ - ╜═Г═╚Л╜КЕ Д╝Ю╛. - - ▐╝╚О: - - id INT UNSIGNED - ╗╓╔╜Б╗Д╗╙═Б╝Ю ╖═╞╗А╗ - w1 CHAR(30) - А╚╝╒╝Д╝Ю╛═, ╖═╞╗А═╜╜═О ╖═ё╚═╒╜К╛╗ ║Ц╙╒═╛╗ - w2 INT UNSIGNED - ╗╓╔╜Б╗Д╗╙═Б╝Ю ╜═Г═╚Л╜╝╘ Д╝Ю╛К. - - -▓═║╚╗Ф═ word2question. ▓═║╚╗Ф═ А╝╝Б╒╔БАБ╒╗╘ ╜═Г═╚Л╜═О Д╝Ю╛═ - - А╞╗А╝╙ ╒Е╝╕╓╔╜╗╘ ╒ ╒╝╞Ю╝АК. █═╒╔Ю╜╝╔, МБЦ Б═║╚╗ФЦ ╛╝╕╜╝ - ║К╚╝ ╝║Й╔╓╗╜╗БЛ А Б═║╚╗Ф╔╘ nf. - - ▐╝╚О: - - word INT UNSIGNED - ╗╓╔╜Б╗Д╗╙═Б╝Ю ╜═Г═╚Л╜╝╘ Д╝Ю╛К - questions MEDIUMBLOB - А╞╗А╝╙ ╒Е╝╕╓╔╜╗╘. ┼═╕╓╝╛Ц ╒Е╝╕╓╔╜╗Н А╝╝Б╒╔БАБ╒Ц╔Б - 4 ║═╘Б═: ╝╓╗╜ ╜═ ╜╝╛╔Ю ╞╝╚О, ╓╒═ ╜═ ╜╝╛╔Ю ╒╝╞Ю╝А═, - ╝╓╗╜ ╜═ ╞╝╖╗Ф╗Н ╒ ╒╝╞Ю╝А╔. ▒ Ц╕═А╝╛ ╕╓Ц, ╙╝ё╓═ - ▌╚╔ё ╓╝║═╒╗Б ╒╝╞Ю╝А ╜╝╛╔Ю 65536 ╗ ╞Ю╗╓ЯБАО - Ц╒╔╚╗Г╗╒═БЛ Г╗А╚╝ ║═╘Б, ╝Б╒╔╓╔╜╜КЕ ╜═ ╒Е╝╕╓╔╜╗╔ - ╗╚╗ ╒╝╖╗БЛАО А ║╗Б═╛╗ :) ∙Ю═╜╗БАО Б╝╚Л╙╝ ╜╗╕╜╗╘ ║═╘Б - ╜╝╛╔Ю═ ╒Е╝╕╓╔╜╗О ╒ ╞╝╚╔. ▐╝ёЮ╔Х╜╝АБЛ, А╒О╖═╜╜ЦН - А МБ╗╛, АГ╗Б═Н ╞Ю╔╜╔║Ю╔╕╗╛╝ ╛═╚╝╘. - - -▐╝╗А╙ -~~~~~ -░ЦАА╙╗╘ ╞╝╗А╙ ╞Ю╝╗╖╒╝╓╗БАО А╙Ю╗╞Б╝╛ db.cgi ╞Ю╗ Ц╙═╖═╜╗╗ ╝╞Ф╗╗ -"metod=rus". ┌╝Б ═╚ё╝Ю╗Б╛: - - -1. ┌К╓╔╚О╔╛ ╗╖ ╞╝╗А╙╝╒К╘ АБЮ╝╙╗ ╛═╙А╗╛═╚Л╜К╔ ╞╝А╚╔╓╝╒═Б╔╚Л╜╝АБ╗ -ЮЦАА╙╗Е, ╚═Б╗╜А╙╗Е ║Ц╙╒ ╗ Ф╗ДЮ. - -2. ┬И╔╛ ╜═Г═╚Л╜К╔ Д╝Ю╛К ╞╝╚ЦГ╔╜╜КЕ А╚╝╒╝Д╝Ю╛ ╞╝ Б═║╚╗Ф╔ nests. ■╝Ю╛К, -╙╝Б╝ЮКЕ Б═╛ ╜╔Б, ╞Ю╝╒╔ЮО╔╛ ╞╝ А╚╝╒═ЮН ╗ Б═║╚╗Ф╔ ═ДД╗╙А╝╒. ■╝Ю╛К, ╙╝Б╝ЮК╔ -╒АЯ ╔ИЯ ╜╔╝╞╝╖╜═╜К, АГ╗Б═╔╛ ╜╔╜═╘╓╔╜╜К╛╗. - -3. ▐╝ Б═║╚╗Ф╔ word2questions ╗И╔╛ А╞╗А╙╗ ╒Е╝╕╓╔╜╗╘ А╚╝╒ ╒ -╖═БЮ╔║╝╒═╜╜К╔ ╞╝╚О, ╒К╓╔╚О╔╛ А╞╗А╙╗ ╒╝╞╝А╝╒, ╒ ╙╝Б╝ЮК╔ ╒Е╝╓ОБ А╚╝╒═, -╒ ╖═╒╗А╗╛╝АБ╗ ╝Б ╖╜═Г╔╜╗О ╝╞Ф╗╗ all ║╔ЮЯ╛ ╗Е ╝║Й╔╓╗╜╔╜╗╔ ╗╚╗ ╞╔Ю╔А╔Г╔╜╗╔ - -МБ╝ А╞╗А╝╙ ╜═╘╓╔╜╜КЕ ╒╝╞Ю╝А╝╒. ▒╝ЕЮ═╜О╔╛ ╓╚О ╙═╕╓╝ё╝ ╒╝╞Ю╝А═ А╞╗А╙╗ ╒Е╝╕╓╔╜╗╘. - -4. ▒Г╗Б═╔╛ ╓╚О ╙═╕╓╝ё╝ ╜═╘╓╔╜╜╝ё╝ ╒╝╞Ю╝А═ Ю╔╚╔╒═╜Б╜╝АБЛ ╞╝╗А╙╝╒╝╘ ДЮ═╖К ╗ -А╝ЮБ╗ЮЦ╔╛ ╞╝ ╜╔╘. - -5. ▐Ю╗ ╒К╒╝╓╔ ╒К╓╔╚О╔╛ ╕╗Ю╜К╛ ХЮ╗ДБ╝╛ ╒Е╝╕╓╔╜╗О ╗А╙╝╛КЕ А╚╝╒. -≤═║╚╝╜, ╞╝ ╙╝Б╝Ю╝╛Ц ╒К╓╔╚ОНБАО А╚╝╒═, Д╝Ю╛╗ЮЦ╔БАО ╞╝ Б═║╚╗Ф╔ -nests. - - -┌ db.cgi ╓╝║═╒╚╔╜═ Б═╙╕╔ ╝╞Ф╗О debug, ╞Ю╗ ЦАБ═╜╝╒╙╔ ╙╝Б╝Ю╝╘ -╒К╒╝╓╗БАО ╝Б╚═╓╝Г╜═О ╗╜Д╝Ю╛═Ф╗О. - -┌ db.cgi ╞╝╓╓╔Ю╕╗╒═НБАО Б═╙╕╔ ╞╝╗А╙ ╞╝ Simple Query ╗ Advanced -Query (╙═╙ ╗Е ╞╝╜╗╛═╔Б altavista), ╜╝ ╝╙═╖═╚╝АЛ, ГБ╝ -╞╝╗А╙ ╞╝ Ю╔ёЦ╚ОЮ╜╝╛Ц ╒КЮ═╕╔╜╗Н ╜═ ╞ОБ╗╓╔АОБ╗ БКАОГ═Е ╒╝╞Ю╝А╝╒ Ю═║╝Б═╔Б -Г╔Ю╔АГЦЮ ╓╝╚ё╝, ╞╝Б╝╛Ц МБ╗ ╒╝╖╛╝╕╜╝АБ╗ ╜╔ ╗А╞╝╚Л╖ЦНБАО. -█╝, ╒╝╝║И╔-Б╝, ╓╚О ╜╗Е ╔АБЛ ╝╞Ф╗╗ "metod=simple" ╗ "metod=advancde". - -■╝Ю╛Ц╚═ Ю╔╚╔╒═╜Б╜╝АБ╗ -~~~~~~~~~~~~~~~~~~~~~ -≈╔АБ╜╝ ё╝╒╝ЮО, О ╒╖О╚ ╞╔Ю╒ЦН ╞Ю╗Х╔╓ХЦН ╜═ Ц╛ Д╝Ю╛Ц╚Ц, ╒Ю╝╓╔ ЕЦ╓╝-║╔╓╜╝ -Ю═║╝Б═╔Б. - -▐ЦАБЛ ╞╝╗А╙╝╒═О ДЮ═╖═ А╝АБ╝╗Б ╗╖ А╚╝╒ s1,s2,...sn. -┼═╕╓╝╔ ╜═╘╓╔╜╜╝╔ А╚╝╒╝ ╓╝║═╒╚О╔Б ╙ Ю╔╚╔╒═╜Б╜╝АБ╗ А╚╔╓ЦНИ╔╔ ╖╜═Г╔╜╗╔: -╙╝╚╗Г╔АБ╒╝_╒Е╝╕╓╔╜╗╘_╒_╒╝╞Ю╝А+1000+1000/╙╝╚╗Г╔АБ╒╝_╒Е╝╕╓╔╜╗╘_╒_║═╖Ц. - -┼═╕╓═О ╞═Ю═ (si, sj) ╓╝║═╒╚О╔Б ╙ Ю╔╚╔╒═╜Б╜╝АБ╗ А╚╔╓ЦНИ╔╔ ╖╜═Г╔╜╗╔: -10 * (10- (min ( distance(i,j) , 10)). - -distance(i,j)=min(|i-j-pi+pj|) - (pi ╗ pj -- ╞╝╖╗Ф╗╗ А╚╝╒ i ╗ j ╒ ╒╝╞Ю╝А╔, ╛╗╜╗╛Ц╛ - АГ╗Б═╔БАО ╞╝ ╒А╔╛ pi ╗ pj) - - - -▒ЦБЛ ╒ Б╝╛, ГБ╝ ╛═╙А╗╛═╚Л╜═О Ю╔╚╔╒═╜Б╜╝АБЛ ║Ц╓╔Б Ц ╒╝╞Ю╝А╝╒, ╒ ╙╝Б╝ЮКЕ -╒АБЮ╔Г═╔БАО ╛═╙А╗╛═╚Л╜╝╔ ╙╝╚╗Г╔АБ╒╝ ╗А╙╝╛КЕ А╚╝╒ (МБ╝ ╗╛╔╔Б ╖╜═Г╔╜╗╔, -╔А╚╗ all=no), ╖═Б╔╛ ЦГ╗БК╒═╔БАО Ю═А╞Ю╝АБЮ═╜Я╜╜╝АБЛ ╙═╕╓╝ё╝ А╚╝╒═ ╗ -║╚╗╖╝АБЛ ╗Е ╒ ╒╝╞Ю╝А╔ ╓ЮЦё ╙ ╓ЮЦёЦ. ▄═╙А╗╛═╚Л╜═О Ю╔╚╔╒═╜Б╜╝АБЛ, -╙═╙ ╞Ю═╒╗╚╝, ║Ц╓╔Б Ц ╒╝╞Ю╝А╝╒, ╒ ╙╝Б╝ЮКЕ ╞╝╗А╙╝╒К╔ А╚╝╒═ ╒АБЮ╔Г═НБАО ╞╝╓ЮО╓, -╒ Б╝╛ ╕╔ ╞╝ЮО╓╙╔, ГБ╝ ╗ ╒ ╖═╞Ю╝А╔. - - - -┼═╙╗╔ Д╝Ю╛К ╞Ю╗╖╜═НБАО ╝╓╗╜═╙╝╒К╛╗ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -▓╔, ╙╝Б╝ЮК╔ ╞╝╞═╓═НБ ╒ ╝╓╜╝ ё╜╔╖╓╝, А╝ё╚═А╜╝ Б═║╚╗Ф╔ ═ДД╗╙А╝╒ А╚╝╒═ЮО ▀╔║╔╓╔╒═ -╓╚О ispell. - -▌╞╗АК╒═БЛ, ╙═╙╗╔ А╚╝╒╝╗╖╛╔╜╔╜╗О ЦГ╗БК╒═НБАО, ═ ╙═╙╗╔ -- ╜╔Б, -╜╔╞Ю╝АБ╝. ▐╝А╙╝╚Л╙Ц А╚╝╒═ЮЛ А╝╖╓═╜ ╜╔ ╓╚О ╝╞Ю╔╓╔╚╔╜╗О ╜═Г═╚Л╜╝╘ Д╝Ю╛К, -═ ╓╚О ╞Ю╝╒╔Ю╙╗ ╝ЮД╝ёЮ═Д╗╗, ╝Г╔╜Л ╛╜╝ё╝ А╚╝╒╝╗╖╛╔╜╔╜╗╘ ╝╜ ╜╔ ЦГ╗БК╒═╔Б. -█═╞Ю╗╛╔Ю, ╒ А╚╝╒═Ю╔ ╛╝╕╜╝ ╒АБЮ╔Б╗БЛ ╗ А╚╝╒╝ ═ё╜╔Ф, ╗ А╚╝╒╝ ═ё╜Ф╔╒ -- -╓╝║═╒╗БЛ Д╝Ю╛К ╒ А╚╝╒═ЮЛ, ╒╗╓╗╛╝, ╝╙═╖═╚╝АЛ ╞Ю╝И╔, Г╔╛ ╞Ю═╒╗БЛ -Б═║╚╗ФЦ ═ДД╗╙А╝╒. ▐╝-Е╝Ю╝Х╔╛Ц ╜═╓ Б═║╚╗Ф╔╘ ═ДД╗╙А╝╒ ╗ А╚╝╒═ЮЯ╛ ╜═╓╝ ╝Г╔╜Л -А╔ЮЛЯ╖╜╝ Ю═║╝Б═БЛ. ┌ ╗╓╔═╚╔, ╜═╓╝ ╗А╞╝╚Л╖╝╒═БЛ ╜╔ А╚╝╒═ЮЛ ▀╔║╔╓╔╒═, ═ -А╚╝╒═ЮЛ ┤═╚╗╖╜О╙═, ╜╝ ╔ё╝ Б═║╚╗Ф ╒ Ц╓╝║╜╝╛ ╓╚О ╝║Ю═║╝Б╙╗ М╚╔╙БЮ╝╜╜╝╛ ╒╗╓╔ -О ╜╔ ╜═ХЯ╚. - - -░╝╛═╜ ▒╔╛╗╖═Ю╝╒ -roma7@zaba.ru - - + + +Общие слова +~~~~~~~~~~~ + +Словоформой считается жадная последовательность русских букв, латинских букв +и цифр. Например, "Екатерина", "England", "1974", "H2O". +"H_2O", "Владивосток-2000" -- это пары словорм. + +Начальная форма словоформы, не состоящей целиком из +русских букв -- это сама словоформа. + +Регистр букв при поиске не учитывается. + +Поиск по части слова не поддерживается. Не поддерживаются и +регулярные выражения. + +Список новых файлов, которые планируется поставить под CVS. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Словари: + + dict.koi Словарь Александра Лебедева для ispell. + Образован слиянием всех словарей, + которые я смог найти. + + mydict.koi Самопальное дополнение словаря. Допускаются некоторые + вольности. Например, в Лебедевском словаре + существительные второго склонения, как правило, + помечены ключем "K" или, если они не имеют формы + множественного числа - ключём "J". В mydict.koi + все такие существительные попадают с ключём "K". + + + ndict.koi Автоматически сгенерированный дополнительный словарь. + Пример: в dict.koi нет слова "Эйдельман", + а в базе встречаются словоформы "Эйдельман" + и "Эйдельмана". Скрипт, обнаружив это, + понял, что это могут быть формы существительного + женского рода "Эйдельмана" ("Эйдельман" -- форма + родительного падежа множественного числа), и дополнил + ею словарь. + + + raff.koi Таблица аффиксов к словарю Лебедева. + +Скрипты: + + makecheck.pl По таблице аффиксов генерирует текст функции, + ищущей начальную форму словоформы. + + mkRS.pl Пересоздаёт поисковые таблицы и обнуляет поле + ProcessedBySeacrh у всех вопросов. + + updateRS.pl Ищет вопросы с нулевым ProcessedBySearch + и добавляет информацию о них в таблицы. + Работает очень медленно (около секунды на вопрос на + AMD-400), начинает обрабатывать следующий ий вопрос + только после того, как в базе появилась информация о + предыдущем. В результате может быть в любой момент прерван + без ущерба для таблиц. + + updateRS1.pl Делает тоже самое, что updateRS.pl, но обрабатывает вопросы + порциями, записывая информацию в память, скидывая + информацию в базу только после того, как порция + будет полностью обработана. Оптимальный размер порции + зависит от мощности машины. + + dumpRS.pl Скидывает в файл дамп таблицы word2question. + + dumpin2out.pl Скидывает в файл таблицу соответствий + идентификатор вопроса в базе -> внешнее имя + (Турнир.Тур.Номер). + + dump2dump.pl Преобразует дамп таблицы word2question + под другую заливку базы, используя таблицы + соответствий двух заливок. Суть в том, что + при перезаливке базы изменяются идентификаторы + вопросов. Использование этого скрипта позволяет избежать + запуска "долгих" скриптов updateRS.pl и updateRS1.pl + Кроме того, скрипт может использоваться при переносе таблиц, + например, с бильбо на кулички. + + delRS Удаляет из дампа таблицы word2question информацию о + вопросах, соответствующих указанным файлам. + + checkPBS.pl Проставляет поле ProcessedBySearch на основании + информации из таблицы word2question + + +Вспомогательные файлы: + + chgk.cnf Конфигурационный файл. + + chgkfiles.pm Модуль для работы c файлами + + dbchgk Модуль для работы с базой + + + + +Стандартные процедуры +~~~~~~~~~~~~~~~~~~~~~ + +Полная заливка + + Запустить mkRS.pl, затем updateRS.pl и подождать сутки или больше. + Вместо updateRS.pl можно использовать updateRS1.pl, тогда будет побыстрее, + но всё равно довольно долго. + + +Перенос таблиц на другую машину + + На первой машине: + dumpRS.pl dump1 + dumpin2out.pl first + + Затем залить dump1 и first на вторую машину и уже там: + dumpin2out.pl second + dump2dump.pl dump1 dump2 first second + loaddump second + + Все созданные файлы можно удалить. + +Добавление в базу новых файлов + + Добавить файлы скриптом updatedb.pl и запустить updateRS.pl. + Этот скрипт генерирует список нераспознанных слов. + Их начальные формы можно добавить в словарь mydict.koi. + + В принципе, эту процедуру хорошо бы делать перед заливкой (проверив + текстовые файлы), но во-первых скрипта для проверки файлов пока нет + (потому как я только сейчас его придумал), а во-вторых утяжелит + процесс апдейта. Лучше или иногда (раз в несколько месяцев) делать полную + переиндексацию, или сохранив список новых файлов, раз в те же самые + несколько месяцев проделывать процедуру удалить-добавить. + + + +Исправление существующих файлов + + Перед удалением старой базы: + dumpRS.pl temp + delRS temp список удалённых или исправленных файлов + + После заливки таблиц Questions и Tournaments: + loaddump.pl temp + rm temp + updateRS.pl + + +Генерация дополнительного словаря +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Автоматически сгенерированный автоматический словарь +нужен для обработки слов, которых нет в стандартном словаре, +но которые встречаются в базе, причём в разных формах. +В основном, это имена собственные. Работа это одноразовая, +она проделана, потому скрипты не выкладываю. + +1. Сделали полный список русских словоформ, встречающихся в базе. + +2. Проверили каждую словоформу, используя основные словари, +получили список неопознанных словоформ + +3. Построили граф, вершины которого -- неопознанные словоформы (около 70000), +а рёбро есть в том и только том случае, когда одна словоформа +может являться нальной формой другой. + +4. Разбили граф на компоненты связности, в каждой попытвлись +найти словоформу, которая может быть начальной формой всех остальных. +Если такая нашлась -- добавили её в дополнительный словарь. + +В результате работы этого алгоритма образовались допсловарь (около 7000 +начальных форм) и список так и неопознанных словоформ (их осталось +около 40000). Большая часть этих слов -- орфографические ошибки. Очень +много из них получились из-за того, что в некоторых файлах в русских +словах встречаются латинские буквы, совпадающие по начертанию с русскими. + +Для всеобщей гармонии необходимо сделать следующее: + +1. Исправить орфографические ошибки +2. Проверить и исправить автоматически сгенерированные начальные формы. +3. Добавить в словарь почём зря не опознанные словоформы. + +Вторым и третьим пунктами я иногда медленно и печально занимаюсь. + + +Структура таблиц для русского поиска +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Таблица nf. В этой таблице живут список начальные формы. + + Поля: + + id INT UNSIGNED - идентификатор начальной формы + word CHAR(30) - сама начальная форма, записанная + заглавными русскими буквами. + flag CHAR(5) - список флагов таблицы аффиксов + number - количество вхождений форм данной начальной + формы в вопросы + +Таблица nests. В этой таблице живут пары соответствий словоформа - + начальная форма. Одной словоформе могут соответствовать несколько + начальных форм. + + Поля: + + id INT UNSIGNED - идентификатор записи + w1 CHAR(30) - словоформа, записанная заглавными буквами + w2 INT UNSIGNED - идентификатор начальной формы. + + +Таблица word2question. Таблица соответствий начальная форма - + список вхождений в вопросы. Наверное, эту таблицу можно + было объединить с таблицей nf. + + Поля: + + word INT UNSIGNED - идентификатор начальной формы + questions MEDIUMBLOB - список вхождений. Каждому вхождению соответствует + 4 байта: один на номер поля, два на номер вопроса, + один на позицию в вопросе. С ужасом жду, когда + Олег добавит вопрос номер 65536 и придётся + увеличивать число байт, отведенных на вхождение + или возиться с битами :) Хранится только нижний байт + номера вхождения в поле. Погрешность, связанную + с этим, считаю пренебрежимо малой. + + +Поиск +~~~~~ +Русский поиск производится скриптом db.cgi при указании опции +"metod=rus". Вот алгоритм: + + +1. Выделяем из поисковый строки максимальные последовательности +русских, латинских букв и цифр. + +2. Ищем начальные формы полученных словоформ по таблице nests. Формы, +которых там нет, проверяем по словарю и таблице аффиксов. Формы, которые +всё ещё неопознаны, считаем ненайденными. + +3. По таблице word2questions ищем списки вхождений слов в +затребованные поля, выделяем списки вопосов, в которые входят слова, +в зависимости от значения опции all берём их объединение или пересечение - +это список найденных вопросов. Сохраняем для каждого вопроса списки вхождений. + +4. Считаем для каждого найденного вопроса релевантность поисковой фразы и +сортируем по ней. + +5. При выводе выделяем жирным шрифтом вхождения искомых слов. +Шаблон, по которому выделяются слова, формируется по таблице +nests. + + +В db.cgi добавлена также опция debug, при установке которой +выводится отладочная информация. + +В db.cgi поддерживаются также поиск по Simple Query и Advanced +Query (как их понимает altavista), но оказалось, что +поиск по регулярному выражению на пятидесяти тысячах вопросов работает +чересчур долго, потому эти возможности не используются. +Но, вообще-то, для них есть опции "metod=simple" и "metod=advancde". + +Формула релевантности +~~~~~~~~~~~~~~~~~~~~~ +Честно говоря, я взял первую пришедшую на ум формулу, вроде худо-бедно +работает. + +Пусть поисковая фраза состоит из слов s1,s2,...sn. +Каждое найденное слово добавляет к релевантности следующее значение: +количество_вхождений_в_вопрос+1000+1000/количество_вхождений_в_базу. + +Каждая пара (si, sj) добавляет к релевантности следующее значение: +10 * (10- (min ( distance(i,j) , 10)). + +distance(i,j)=min(|i-j-pi+pj|) + (pi и pj -- позиции слов i и j в вопросе, минимум + считается по всем pi и pj) + + + +Суть в том, что максимальная релевантность будет у вопросов, в которых +встречается максимальное количество искомых слов (это имеет значение, +если all=no), затем учитывается распространённость каждого слова и +близость их в вопросе друг к другу. Максимальная релевантность, +как правило, будет у вопросов, в которых поисковые слова встречаются подряд, +в том же порядке, что и в запросе. + + + +Какие формы признаются одинаковыми +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Те, которые попадают в одно гнездо, согласно таблице аффиксов словаря Лебедева +для ispell. + +Описывать, какие словоизменения учитываются, а какие -- нет, +непросто. Поскольку словарь создан не для определения начальной формы, +а для проверки орфографии, очень много словоизменений он не учитывает. +Например, в словаре можно встретить и слово агнец, и слово агнцев -- +добавить формы в словарь, видимо, оказалось проще, чем править +таблицу аффиксов. По-хорошему над таблицей аффиксов и словарём надо очень +серьёзно работать. В идеале, надо использовать не словарь Лебедева, а +словарь Зализняка, но его таблиц в удобном для обработки электронном виде +я не нашёл. + + +Роман Семизаров +roma7@zaba.ru + +