FAQのリストのためにいくつかの非常に単純な検索機能を書いています。スペースを含むさまざまな文字で検索文字列を分割しています。次に、の線に沿って選択を実行します
SELECT *
FROM "faq"
WHERE
((LOWER("Question") LIKE '%what%'
OR LOWER("Question") LIKE '%is%'
OR LOWER("Question") LIKE '%a%'
OR LOWER("Question") LIKE '%duck%'))
データアクセス層によって生成されたものとしてこれを少し編集する必要がありましたが、何が起こっているのかがわかるはずです。
この問題は、ほとんどの質問にaまたはが含まれている可能性が高いという点で上記のクエリでよく示されていますが、頭字語が検索者にとって重要である可能性があるため、これらを除外することはできません。提案されているのは、一致するキーワードの数で並べ替えることです。しかし、SQLでこれを行う方法を見つけることができませんでした(キーワードなどのインデックスを使用して単純な検索エンジンを作成する時間がありません)。SQLステートメント内のLIKE一致の数をカウントし、それによって順序付けて、キーワードが最も多い質問が結果の上部に表示されるようにする方法があるかどうかを誰かが知っていますか?