私はphpプログラマですが、新しいことを学ぶために視野を広げたいと思いました。 したがって、私は他の言語と技術を学ぶことにしました。 これまでのところ、選択はperl、python、mysqlに落ちています。
彼らは素晴らしい
pymorphyパッケージ、
Flibustライブラリ(.fb2のみ)、
fb2を保存するためのsedna、統計と小さなファイルを保存するためのmysql
percona 5.1を
取りました 。 原始的なmyisamプレートが作成され、文が記録され、この文のスピーチの部分の説明が作成されました。
説明によれば、一意のテキストインデックスを作成しましたが、数値フィールドでインデックスを作成するのを忘れていました(役に立たないと思いました)。
フィリバスターのFb2は
セドナデータベースに配置され、ベースは90 GBのどこかにあることが判明しました。
最初のステップでは、ライブラリで見つかったすべての一意の単語を収集しました。 約1400万語になりました。 これらはユニークな言葉とその形、そして他のゴミでした。
pickleモードでのpymorphyは初期化に非常に多くの時間を費やし、PHPからシェルを介してプルするのに非常に長い時間がかかることが実験的にわかっています。 pythonを習い始めたばかりで、pymorphyを使用する必要があったスピーチの一部を取得するために、後者をサーバーとして実行することにしました。 これにより、長い初期化の問題が解消されました。これは、およそ次のように発生しました。
#!/usr/bin/env python <br/>
# -*- coding: utf-8 -*- <br/>
from pymorphy import get_morph<br/>
import re , sys , socket , pprint ,json,chardet, ConfigParser <br/>
<br/>
def do_word ( data ) :<br/>
if ( data == False or data == '' ) : print "error incoming data !!!" <br/>
tmpWord = re . sub ( r "rn" , '' ,data ) <br/>
word = tmpWord. decode ( 'utf-8' ) . upper ( ) <br/>
if ( DEBUG == 1 ) : print word<br/>
info = morph._decline ( word ) <br/>
if ( DEBUG == 1 ) : pprint . pprint ( info ) <br/>
sjSon = json. dumps ( info ) <br/>
return sjSon<br/>
<br/>
config = ConfigParser . ConfigParser ( ) <br/>
config. read ( 'pymorphy_conf.ini' ) <br/>
DEBUG = config. getint ( 'decline' , 'DEBUG' ) <br/>
HOST = config. get ( 'decline' , 'HOST' ) <br/>
PORT = config. getint ( 'decline' , 'PORT' ) <br/>
<br/>
morph = get_morph ( "/pymorphy/dicts/converted/ru/morphs.pickle" , 'pickle' ) <br/>
<br/>
srv = socket . socket ( socket . AF_INET , socket . SOCK_STREAM ) <br/>
srv. bind ( ( HOST,PORT ) ) <br/>
while 1 :<br/>
if ( DEBUG == 1 ) : print " " ,PORT<br/>
srv. listen ( 1 ) <br/>
sock,addr = srv. accept ( ) <br/>
while 1 :<br/>
pal = sock. recv ( 1024 ) <br/>
if not pal:<br/>
break <br/>
lap = do_word ( pal ) <br/>
sock. send ( lap ) <br/>
sock. close ( )
次に、この即興サーバーを参照して、彼は以前に見つかった単語の品詞を書き留めました。 これはすべて夕方に行われ、それほど困難を引き起こしませんでした。
その後、最も簡単なことは統計を収集することです。 私は2ヶ月間それを集めました、その後、私は疲れました。 ボトルネックになったことは言うのが難しいです。 単語のスピーチの一部を検索する〜0.0046秒、残りの操作も正常です。単語をすばやく組み立てることができたからです。 セドナも前の段階でテストされ、飛行しませんでしたが、数時間で彼女から言葉を集めることができたので、彼女のパフォーマンスはオファーに関する統計を収集するのに十分でした。
その結果、次のデータが得られました。
等
補足によると(このデータはフリバスタだけではなく、他のテキストも少し混ざっています)
トップ | 1500および 少ない | 150および 少ない | 15以下 |
いや | 60300 | 窓辺 | 1500 | ナチス | 150 | アイヒ | 15 |
私は | 53847 | 木造 | 1500 | 曲がった | 150 | ランター | 15 |
はい | 50813 | 落とした | 1499 | ジュレ | 150 | ブトフサン | 15 |
なに | 48819 | 名前 | 1499 | 来世 | 150 | xsites | 15 |
だから | 45926 | 成長した | 1499 | 屋台 | 150 | 悲劇 | 15 |
すべて | 44672 | 高い | 1499 | アル | 150 | Atcal | 15 |
それは | 42825 | ディープ | 1499 | ラムズ | 150 | おいしい | 15 |
彼は | 42154 | 積極的に | 1499 | シフトした | 150 | 貝類 | 15 |
あなたは | 38073 | 奇跡 | 1498 | レーザー | 150 | ハニー | 15 |
私 | 35976 | 説明する | 1498 | コンベア | 150 | 時間外科医 | 15 |
でも | 35900 | 鳴った | 1498 | ブルネット | 150 | いわしゅり | 15 |
彼の | 35394 | 突入 | 1498 | 女子学生 | 150 | 加速器 | 15 |
どうやって | 34347 | 図 | 1498 | 泥棒 | 150 | 振動 | 15 |
私に | 34078 | 夜 | 1498 | スカウト | 150 | 五arch星 | 15 |
そして | 33836 | 作品 | 1498 | 生理的 | 150 | ゴーシン | 15 |
彼女は | 31373 | 大丈夫 | 1498 | 詩的な | 150 | ロイド | 15 |
大丈夫 | 30932 | 不満 | 1498 | 引き上げた | 150 | マーシャル | 15 |
あなたは | 30738 | ドル | 1497 | シリンダー | 150 | 女 | 15 |
こっち | 29969 | 呼ばれた | 1497 | トリプル | 150 | 女 | 15 |
そこにある | 29579 | 回った | 1497 | 討論 | 150 | クロノゲン | 15 |
だった | 29297 | 引っ張った | 1497 | 最低 | 150 | コバリャフ | 15 |
でも | 29009 | シャンパン | 1497 | 特徴的 | 150 | ヤギャ | 15 |
そこに | 28955 | 爆弾 | 1497 | プラーク | 150 | エネルギー情報 | 15 |
まあ | 28612 | 要求された | 1496 | 机 | 150 | コンソートライン | 15 |
何もない | 28605 | 考えている | 1496 | 追放された | 150 | 分析 | 15 |
事業 | 27653 | 喜び | 1496 | 遺伝的 | 150 | サイスフィア | 15 |
同じ | 26973 | 検査する | 1496 | 記念日 | 150 | 鍛造 | 15 |
こっち | 26898 | 達した | 1495 | 老人 | 150 | リフレシアン | 15 |
まだ | 26640 | のソース | 1495 | 荒れ地 | 150 | リフレシアン | 15 |
彼女 | 26556 | 回った | 1495 | たまねぎ | 150 | スレイヤー | 15 |
人 | 26415 | 上げた | 1495 | 発電機 | 150 | レビコフ | 15 |
今 | 26408 | 抜いた | 1495 | 気取らない | 150 | グレンケ | 15 |
する必要がある | 25657 | 灰色の | 1495 | ラッパー | 150 | いらし | 15 |
もちろん | 25568 | 不幸 | 1494 | 食欲をそそる | 150 | カムラ | 15 |
なんで | 25216 | 見た | 1494 | 回った | 150 | アルバロヘ | 15 |
5月 | 25012 | 驚くほど | 1494 | 兆候 | 150 | ワンドゥク | 15 |
私たちは | 24847 | おじ | 1493 | 盗聴 | 150 | シェフアタッフェ | 15 |
知ってる | 24843 | チェック | 1493 | ゴキブリ | 150 | タルハノフ | 15 |
彼らは | 24070 | 招待状 | 1493 | 乏しい | 150 | g者 | 15 |
あなたは | 23922 | 重い | 1493 | 清算 | 150 | オルヌムコニオロフ | 15 |
で | 23600 | 介入する | 1493 | 前例のない | 150 | ガンファレス | 15 |
時間 | 23598 | 確かに | 1493 | 意図した | 150 | ガメリナム | 15 |
彼らの | 22956 | 見た | 1493 | 利益 | 150 | ウラジュノム | 15 |
あなたは | 22780 | 継続 | 1492 | 給餌 | 150 | エラタ | 15 |
それから | 22730 | 反対した | 1492 | コメントする | 150 | ウラジュヌ | 15 |
回 | 22508 | 全体 | 1492 | シックな | 150 | 草食動物 | 15 |
今 | 22488 | アイボグ | 1492 | 企業 | 150 | ハレンズ | 15 |
じゃない | 22450 | 始めます | 1492 | ウィグル | 150 | ジアジラ | 15 |
あなたに | 22107 | スナップショット | 1492 | ドロスドフ | 150 | コトレキン | 15 |
彼に | 22014 | 理解する | 1491 | 有効な | 150 | ブラックマジック | 15 |
言った | 21970 | 会議 | 1491 | 従う | 150 | ドゥルネヴ | 15 |
私たち | 21950 | 熱 | 1491 | 霧深い | 150 | コトレチナ | 15 |
目 | 21763 | ジャンプする | 1491 | チェックアウト | 150 | スプリウス | 15 |
誰 | 21740 | 想像する | 1491 | 無関心 | 150 | ROBUSGROBUS | 15 |
私自身 | 21656 | なぞなぞ | 1491 | 常習的 | 150 | よは | 15 |
なります | 21642 | バジル | 1491 | と呼ばれる | 150 | テトラゾアクル | 15 |
一 | 21576 | 鳴った | 1490 | バレリアン | 150 | ヤラアト | 15 |
それから | 21438 | 接続された | 1490 | のように見えた | 150 | マゴロディ | 15 |
であるために | 21415 | 静かに | 1490 | コア | 150 | リグロム | 15 |
人々 | 21368 | 遅い | 1490 | 応答する | 150 | ラマ | 15 |
人生 | 21322 | 昨日 | 1489 | 描かれた | 150 | ヴァルナナ | 15 |
真実 | 20972 | 薄い | 1489 | 可聴 | 150 | ベリリア | 15 |
と | 20645 | 言った | 1489 | はしご | 150 | ニムロベツ | 15 |
のみ | 20603 | 潜った | 1489 | 水 | 150 | ダンク | 15 |
人生の | 20517 | 帰る | 1489 | 横行 | 150 | レギアラ | 15 |
について | 20516 | 旗 | 1489 | 文明 | 150 | チャーロック | 15 |
かどうか | 20450 | アップ | 1489 | スキャンダラス | 150 | 真冬 | 15 |
もっと | 20328 | 電話する | 1489 | イギリス人 | 150 | アグロド | 15 |
と言う | 20318 | 忠実 | 1489 | 抗議した | 150 | ゾリク | 15 |
自分に | 20299 | 置き換えられた | 1488 | 絞め殺す | 150 | アウトランド | 15 |
より | 20291 | 真面目な | 1488 | 丸い | 150 | ビアルタ | 15 |
それから | 20244 | シフト | 1488 | 鍋 | 150 | レナルド | 15 |
良いです | 20047 | ウラジミール | 1488 | それから | 150 | サモネンコ | 15 |
あなたに | 20024 | 雰囲気 | 1487 | ock笑 | 150 | デュシュカ | 15 |
さらに | 19819 | 逃げました | 1487 | 限界 | 150 | モルフィチェフ | 15 |
どこで | 19600 | 反対 | 1487 | ro音 | 150 | ヴァリキン | 15 |
手 | 19545 | マント | 1487 | 悪魔の | 150 | げっ歯類 | 15 |
する | 19525 | いびき | 1487 | 肉 | 150 | コンク | 15 |
もし | 19522 | 先輩 | 1487 | スリッパ | 150 | グローリス | 15 |
に | 19444 | 始まった | 1487 | 呼ばれた | 150 | レベディンスカヤ | 15 |
歳 | 19444 | ラグ | 1487 | ミネラル | 150 | ワリュイショク | 15 |
家で | 19361 | カップル | 1487 | 伝統 | 150 | 欲しかった | 15 |
彼 | 19096 | 引き返す | 1487 | シャットダウン | 150 | シャア | 15 |
言葉 | 19026 | わかりにくい | 1487 | たけと | 150 | グギマ | 15 |
することができます | 18966 | 好意的に | 1487 | 冒険家 | 150 | グロング | 15 |
これの | 18860 | 未亡人 | 1487 | ロマンチックな | 150 | オーバーボルチク | 15 |
日 | 18772 | 間違えた | 1486 | シープスキンコート | 150 | ベッカム | 15 |
なんで | 18730 | 与えた | 1486 | 感動 | 150 | どうやって | 15 |
人の | 18680 | 与えた | 1486 | 硬化した | 150 | クテバノワ | 15 |
も | 18583 | 待って | 1486 | 塗装済み | 150 | 掘り | 15 |
だった | 18450 | 新鮮な | 1486 | 責任者 | 150 | ストロバッハ | 15 |
するだろう | 18438 | 新鮮な | 1486 | 文化的な | 150 | ゾーン | 15 |
意地悪 | 18361 | 写真 | 1486 | ブレンド | 150 | ブリーフケース | 15 |
人の | 18312 | 奴隷 | 1486 | 読む | 150 | ラエル | 15 |
彼 | 18293 | 提灯 | 1485 | 親密な | 150 | Bepe | 15 |
質問 | 18276 | セッティング | 1485 | 食べ物 | 150 | クラスプ | 15 |
戻る | 18186 | 時間がある | 1485 | 価値がない | 150 | 購入 | 15 |
私たちに | 18167 | 振る舞い | 1485 | 震えた | 150 | クプリンガ | 15 |
または | 18155 | 件名 | 1485 | 新着 | 150 | ストロック | 15 |
そのような | 18116 | 結果 | 1485 | 襟 | 150 | モスキーナ | 15 |
合計で、90 611 059件のオファーが処理されました。
すぐに数値フィールドにインデックスを作成するのを忘れて、深刻な問題にぶつかりました。 5800万件のレコードと12 GBのサイズのテーブルを取得した後、インデックスは1日以上にわたって作成され、決して作成されませんでした。 抜け出し
myisam_sort_buffer_size=1024MB
1 GBに設定され、インデックスは数時間で作成されます。
追伸 サーバー構成:AMD Athlon(tm)II X4 635プロセッサー、16 GB DDR3、WDC WD7500AACS-00D6B1