2011-07-26 10 views
1

私は大きなテキスト文字列と約200個のキーワードをテキストから除外します。Ruby:単語の配列に基づいてテキストからキーワードをフィルタリングするための素早い方法

あり、この藤堂数多くの方法がありますが、私はどの方法にこだわっているのがベストです:

1)各キーワード

3用GSUBでループに使用します)大規模な正規表現を使用します一度だけ、テキストを歩くために起こっているよう

他のアイデアは、あなたたちは

答えて

3

を示唆しているどのような大規模な正規表現が高速です。

また、テキストが必要ない場合は、最後に単語のみをダウンセットされた単語のセットにしてから、フィルタ配列内の単語を削除できます。しかし、これは、最後に意味をなさせるために "テキスト"を必要としない場合(通常、タグまたは全文検索の場合)にのみ機能します。

0

各有効なキーワードをキーとしてハッシュを作成します。

keywords = %w[foo bar baz] 
keywords_hash = Hash[keywords.map{|k|[k,true]}] 

と仮定すると、すべてのキーワードは3文字以上であり、かつ 英数字やハイフンで構成され、ケースは、 無関係であり、あなたは、テキストのみの各キーワード存在はかつて返さたい:

keywords_in_text = text.downcase.scan(/[[:alnum:][-]]{3,}/).select { |word| 
    keywords_hash.has_key? word 
}.uniq 

検索するテキストと有効なキーワードのリストの両方が非常に大きい場合でも、これはかなり効率的です。

関連する問題