2
私のプログラムでは、Twitterフィードのデータを使用して逆インデックスを作成していますが、解析してmongodbに入れると面白い問題が発生します。彼らはデシベルで、このように終わるツイートの一部を解析するときしかし、逆インデックスのRubyとMongodbは面白い結果をもたらします
{"ax"=>1, "easyjet"=>1, "from"=>2}
、::
エントリの通常のタイプは、このようにする必要があり
{""=>{""=>{""=>{""=>{""=>{"giants"=>{"dhem"=>1, "giants"=>1, "giantss"=>1}}}}
私はこれらの行を持っていますつぶやきを分割してdbの値をインクリメントする:
def pull_hash_tags(tweet, lang)
hash_tags = tweet.split.find_all { |word| /^#.+/.match word }
t = tweet.gsub(/https?:\/\/[\S]+/,"") # removing urls
t = t.gsub(/#\w+/,"") # removing hash tags
t = t.gsub(/[^0-9a-z ]/i, '') # removing non-alphanumerics and keeping spaces
t = t.gsub(/\r/," ")
t = t.gsub(/\n/," ")
hash_tags.each { |tag| add_to_hash(lang, tag, t) }
end
def add_to_hash(lang, tag, t)
t.gsub(/\W+/, ' ').split.each { |word| @db.collection.update({"_id" => lang}, {"$inc" => {"#{tag}.#{word}" => 1}}, { :upsert => true }) }
end
私は通常の単語を取得しようとしています(英数字のみ)二重スペースはなく、キャリッジリターンはありません。
私は接続して、データベースに入れているものを正確に観察するときに、ロガーを追加することをお勧めします。おそらくあなたのコードに問題があります。 –
約50GBのデータを処理する場合、これは正確に決定するのが難しいでしょう。 – Domness
その場合、ロガーは使用しないでください。これらの異常な文書を探すコードをpull_hash_tagsメソッドに追加してください。 –