0

私のPHPスクリプトは、データの配列全体で一致をチェックする必要があります。現在、完全に一致する文字列を探しています。厳しくないようにしたいと思います。

たとえば、配列に文字列「Tom and Jerry」が含まれている場合、「Tom Jerry」、「Tom&Jerry」、さらには「TomandJery」に対してtrueを返します。PHP検索エンジンへのリンクはもっと複雑で、本当に必要なものではないことがわかりました。私のデータはかなり小さく動的なので、インデックス付けはありません。

大きな毛むくじゃらの正規表現を書くことができることは知っていますが、他の人がすでにこれを行っていると確信しているので、私は車輪の再発明をするだろうと確信しています。どこを見るべきか、またはこれにどのようにアプローチするかについてのアドバイスをいただければ幸いです。

編集:明確にするために、動的に生成されたすべてのデータをDBに入力しないようにしています。

4

3 に答える 3

1

データがMySQLにある場合は、全文検索を使用できます。これは開発が非常に簡単です。問題は、それはソリューションの重みが大きすぎるのではないかということです。

于 2012-06-07T18:36:26.873 に答える
1

試行錯誤が必要になる場合がありますが、次のことができます。

  • 「and」、「in」、「of」など(あなたのTom Jerry例のように)、存在しない可能性のある単語の手動リストを作成します。
  • 文字列と検索クエリの間のハミング距離を計算します。低い場合 (多くても 1 つまたは 2 つ)、true を返します。
  • それ以外の場合は false を返します。
于 2012-06-07T19:04:15.657 に答える
0

私が望むことをするように見える2つの機能を発見しました:

similar_text()

levenshtein()

どちらも、2 つの文字列間の一致の「近さ」を表す intiger を返すようです。両者の違いは私の頭の上にあります。

私の検索は、この SO questionによって助けられました。

于 2012-06-07T19:27:12.037 に答える