私はよくある質問のリストのための非常に簡単な検索機能を書いています。私は、スペースを含む様々な文字に検索文字列を分割しています。そして、その私たちのデータアクセス層によって生成され、わずかにこれを編集するために、私が持っていたCountとWhere By Where句が一致します
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の一致の数を数え、それによって並べ替える方法があれば誰でも知っているので、ほとんどのキーワードを含む質問が結果の上部に表示されます。
ありがとうございましたPgAdminで完璧に動作するようです。私たちは、私たちのためにデータを浄化するEntityspacesというデータアクセス層を使用します。しかし、私たちはこのクエリを自分で構築する必要があるかもしれませんので、注意深く進めてください:) – ClearCarbon
は、私がpgAdminでdesc降順に変更して動作させなければならないことに注意してください。 – ClearCarbon