驚くほど迅速な対応に感謝します。スタックオーバーフローはすごい!
単語 (または何千もの単語) がキーワードを含む辞書と一致しているかどうかを確認する必要があります。
たとえば、文字列があるとします。文字"The fluffy fox jumped the friggin fence."
列の各単語をキーワードの辞書と照合し、一致する場合はすべての値を返す必要があります。
私はdictを作成しましたfilters
:(uniqueid
つまり、「lk2m3lk4m2」、残りは「静的」です。)
filters:
{ "fox" : [
{ 'subscription' : 'uniqueid', 'link' : 'uniqueid' },
{ 'subscription' : 'uniqueid', 'link' : 'uniqueid' }
]},
{ "fence" : [
{ 'subscription' : 'uniqueid', 'link' : 'uniqueid' }
]}
...そして、文字列内の各単語に対してフィルターを反復することを計画しています (そして、おそらく 5000 単語/秒でこれを行う必要があります。つまり、パフォーマンスがすべての問題です。
フィルタ キーワードの数は数千に達する可能性がありますが、文字列は通常の文の長さ (つまり、5 ~ 20 語) を超えることはありません。したがって、文字列内の各単語を繰り返し処理し、フィルター リストに含まれているかどうかを確認します。しかし、毎秒 500 文で、まだ多くの計算を見ています。
たとえば、リスト(つまり、リスト内のdictのキー)をソートして、パフォーマンスを大幅に改善することは可能ですか? そして、私が使用すべきC実装はありますか(cjsonを使用してパフォーマンスを大幅に向上させているように)?
やや流動的な質問で申し訳ありませんが、このタスクはどうすればよいですか?
編集:
予想される入力:
"The fluffy fox jumped the friggin fence."
予想される出力: { 'subscription' : 'flskdmfslk32232', 'link' : 'sfdksmfls22323' },
{ 'subscription' : '3023940fsdf', 'link' : 'sdflsfm223' }
(つまり、一致する各キーワードの下にリストされたサブスクリプション。)