/ /逆インデックスを持つRubyとMongodbは、面白い結果をもたらします - ruby​​、regex、mongodb、hash

逆インデックスを持つRubyとMongodbは、ルビー、正規表現、モンゴブ、ハッシュといった面白い結果をもたらします

私のプログラムでは、Twitterフィードのデータを使って逆索引を作成していますが、解析してmongodbに入れると面白い問題が発生します。

通常のタイプのエントリは、次のようにする必要があります。

{"ax"=>1, "easyjet"=>1, "from"=>2}

しかし、いくつかのつぶやきを解析すると、dbのようになります:

{""=>{""=>{""=>{""=>{""=>{"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

私は普通の単語(英数字のみ)と二重スペースを持たず、キャリッジリターンなどを得ようとしていません。

回答:

回答№1は1

追加する必要があります t.strip! 問題は、空白を先頭に/後ろにしているようです。