2

PHP と MySQL データベースを使用して、イエローページ風の検索エンジンを構築しようとしています。このデータベースには、明らかに名前、住所、そして最も重要な電話番号が保存されています。入力を正確にクレンジングして処理できるように、実行している検索のタイプ​​を選択するようにユーザーに促します。名前/住所については、最も適切と思われる全文検索を実装する可能性が最も高いですか?

ただし、電話番号については、できるだけきれいに保存します (数字のみで、空白はありません。つまり、(07)55 200 314 は 0755200314 として保存されます)。純粋に数字を検索するためのベスト プラクティス (つまり、単純な LIKE '%$search%') があるかどうか疑問に思っていました。MySQL の全文検索は適切ではないことを理解しています。これは、ユーザーが電話番号の一部だけでなく全体を入力する必要があるためです (一致を提供する予定です)。

このトピックに関するご意見をお待ちしております。

4

2 に答える 2

1

一からやり直す必要はありません。http://sphinxsearch.com/やその他の検索ツールなど、本番環境で十分にテストされたソリューションを使用してください。データベースはめったに変更されないように見えますが、サイズが巨大です。ツールは一度インデックスを作成すると、タイプミスを無視して部分一致の堅牢なクエリを作成したり、結果をカスタムの重みで並べ替えた複雑なクエリを作成したりできます。

于 2012-12-28T10:56:02.227 に答える
0

インデックスはphone LIKE '2134%'必要ありません。FULLTEXT通常のBTREE索引を使用します。このようにして、ユーザーは最初から正しい電話番号を入力する必要があります。

またFULLTEXT、検索は単語の長さの制限を意味します。少なくとも 4 文字 (私が間違っていなければ)。また、電話番号を検索するのは適切な解決策ではありません。

true number is 333-15-14 and user input 332-15-14のような電話番号を間違えた場合、 332の直後に別の番号、別の範囲が既にあり、目的の番号と一致しません。

于 2012-12-28T10:53:08.573 に答える