助けが必要な興味深い問題があります。私は現在、自分のプログラムの機能に取り組んでおり、この問題に遭遇しました
データベースに保存されているインドネシアのストリート名の膨大なリスト(> 100k行)があります。各ストリート名には複数の単語が含まれている可能性があります。例:「Sudirman」、「Gatot Subroto」、または「JalanAsiaAfrika」はすべて正当な通りの名前です
データベースにたくさんのテキスト(> 100万行)があり、それを文に分割します。さて、私がしなければならない機能(正確には関数)は、文の中に通りの名前があるかどうかをテストすることなので、真/偽のテストだけです
私はこれらのステップを実行することによってそれを解決しようとしました:
a。通りの名前をKey、Valueハッシュに入れる
b。各文を単語に分割する
c。単語がハッシュに含まれているかどうかをテストします
これは高速ですが、複数の単語では機能しません
私が考えたもう1つの方法は、次の手順を実行することです。
a。各文を単語に分割する
b。LIKEステートメントを使用してデータベースをクエリします(つまり、SELECT #### FROM street_table WHERE name like'%word%')
c。クエリが行を返した場合、それは文に通りの名前が含まれていることを意味します
現在、このソリューションは非常にIOを集中的に使用します。
だから私の質問は「このテストを行うための最も効率的な方法は何ですか」ですか?プログラミング言語に関係なく。私は主にPythonでこれを行いますが、概念を理解できる限り、どの言語でもかまいません
============編集1=================
これは定期的ですか?
はい、この機能を1分間隔で呼び出します。各呼び出しは、少なくとも100行のテキストを受け取り、ストリート名データベースに対してテストします。