誰かが私のSQLクエリを改善するのを助けることができますか?サイト検索用です。クエリは以下のとおりです。検索のための私のSQLクエリを改善する
SELECT j_author.author_id as authorID, author_name, author_description, author_cat, author_city, author_state, points, (SELECT SUM(rate_value) FROM j_rating WHERE j_rating.author_id = authorID) AS rating_value
FROM j_author
JOIN j_author_category ON j_author.author_cat = j_author_category.author_cat_id
WHERE author_name LIKE '%" . $keyword . "%'
OR author_city LIKE '%" . $keyword . "%'
ORDER BY rating_value DESC
これは機能しますが、正確には私が望むものではありません。たとえば、私が「edu」を検索し、「educate」という名前の著者または都市がある場合、それは著者または都市を返します。 「教育された人々」が検索された場合、結果は返されません。
私も使ってみました:
SELECT j_author.author_id as authorID, author_name, author_description, author_cat, author_city, author_state, points, (SELECT SUM(rate_value) FROM j_rating WHERE j_rating.author_id = authorID) AS rating_value,
MATCH(j_author.author_name, j_author.author_city) AGAINST ('$keyword' IN BOOLEAN MODE) AS score
FROM j_author
JOIN j_author_category ON j_author.author_cat = j_author_category.author_cat_id
WHERE MATCH(j_author.author_name, j_author.author_city) AGAINST ('$keyword' IN BOOLEAN MODE)
ORDER BY `score` DESC
をしかし、私はこの方法を使用するたびに、私は「EDU」を検索するとき、それがどんな結果を返しません。
「教育された人」が入力された検索キーワードの場合、「教育」と「人」の両方を別のキーワードとして検索し、いずれかのキーワードに一致する結果を返す必要があります。また、 'edu'がキーワードの場合、eduを持つすべての著者を名前または都市に返します。
全文検索で「部分文字列」の一致が検索されません。単語の一部ではなく単語を探します。部分一致を検索するには、 'edu * 'を検索する必要があります –