オートコンプリート フォーム (jquery Axax + PHP) で使用するクエリを作成するときの SQL のベスト プラクティスについて質問があります。
次のように仮定します。
- 本のタイトルのデータベースがあります
- 「ライフ オブ パイ」など、タイトルに定冠詞 (「The」または「A」) が付いていない本もあります。
- 「The Catcher in the Rye」のように、タイトルに定冠詞 (「The」または「A」) が付いている本もあります。
その結果、ユーザーは書籍のタイトルを最初に「The」を使用するか単に「The」を省略して入力し、定冠詞を付けずにクエリを開始します。
次の 3 つのクエリが考えられます。
SELECT 'title' FROM 'books' WHERE 'title' LIKE '%$string'
また
SELECT 'title' FROM 'books' WHERE 'title' LIKE '$string%'
また
SELECT 'title' FROM 'books' WHERE 'title' LIKE '%$string%'
最初のクエリ メソッド (% が文字列の前にある) を使用すると、文字列の前のワイルドカードが誤って動作するように見えるため、結果を取得するのが困難です。
2 番目のクエリを使用する場合、タイトルの前に「The」を使用すると完全一致が優先されるようです。したがって、「The Catcher in the Rye」を検索しているユーザーは本を見つけることができますが、「Catcher in the Rye」を検索しているユーザーは見つかりません。
文字列の前後にワイルドカードがあるため、最後の結果が最適です。ただし、最長のオートコンプリート リストも表示されます。ユーザーは、検索結果を絞り込むために数文字を入力する必要があります。
より効率的なクエリの実装に関するアイデアはありますか? それとも、3 番目のオプションが最適なオプションですか (本のタイトルで定冠詞を分離することは現実的ではないことを考えると?
前もって感謝します、