サイズが約 5.8 MB で、560,000 語を含む「単語」のファイルがあります。結合された文字列から実際の単語を取得するために使用しています。
たとえば、greenbananatruckはそのような文字列である可能性があります。
私はこの関数を非常に速いペースで使用するために書きました。しかし、 0.5 秒より速くすることはできません。8 コア プロセッサ、8 GB RAM のサーバーを使用しています。実際にはCPUは問題ではなく、問題はRAMです。このプロセスを複数のインスタンスで迅速かつ効率的に実行できる必要があります。
public function wordSplitReal( $str ){
$words = array_filter( $this->dict, function($word) use(&$str) {
$pos = strpos( $str, $word );
if ( $pos !== false ){
$str = substr_replace($str, "", $pos, strlen($word));
return true;
}
return false;
} );
return $words;
}
それは非常に簡単です。私が実際に行っているのは、配列「dict」を特定の文字列に含まれる単語のみに「フィルタリング」することです。(複数の単語には興味がありません。) dict は、最長の単語から最短の単語の順に並べ替えられています。すべて小文字のみ。この関数は、シングルトンを使用するより大きなクラスの一部です。
どんな助けでも大歓迎です。