私は大きなテキスト文字列と約200個のキーワードをテキストから除外します。Ruby:単語の配列に基づいてテキストからキーワードをフィルタリングするための素早い方法
あり、この藤堂数多くの方法がありますが、私はどの方法にこだわっているのがベストです:
1)各キーワード
3用GSUBでループに使用します)大規模な正規表現を使用します一度だけ、テキストを歩くために起こっているよう
他のアイデアは、あなたたちは
私は大きなテキスト文字列と約200個のキーワードをテキストから除外します。Ruby:単語の配列に基づいてテキストからキーワードをフィルタリングするための素早い方法
あり、この藤堂数多くの方法がありますが、私はどの方法にこだわっているのがベストです:
1)各キーワード
3用GSUBでループに使用します)大規模な正規表現を使用します一度だけ、テキストを歩くために起こっているよう
他のアイデアは、あなたたちは
を示唆しているどのような大規模な正規表現が高速です。
また、テキストが必要ない場合は、最後に単語のみをダウンセットされた単語のセットにしてから、フィルタ配列内の単語を削除できます。しかし、これは、最後に意味をなさせるために "テキスト"を必要としない場合(通常、タグまたは全文検索の場合)にのみ機能します。
各有効なキーワードをキーとしてハッシュを作成します。
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
検索するテキストと有効なキーワードのリストの両方が非常に大きい場合でも、これはかなり効率的です。