FULLTEXT 検索と単純な WHERE を組み合わせようとしていますが、結果が多すぎます。
SQL をストアド プロシージャに変換する前に、phpmyadmin で SQL を実行してテストしています。
私が実行すると:
SELECT *
FROM mytable
WHERE MATCH(title,designer_manufacturer,countryoforigin_materials,additional_info)
AGAINST ('+glass +vase' IN BOOLEAN MODE)
(カタログ内のすべてのガラスの花瓶を取得するには) 正常に動作し、期待どおりの 14 の結果が得られました。
mytable には「groupID」という別のフィールドがあり、値は A/B/C です。これらの結果をグループごとにフィルタリングしたい、または逆に、1 つのグループでのみ一致を実行したい。
私が走るとき
SELECT *,
MATCH (title,designer_manufacturer,countryoforigin_materials,additional_info)
AGAINST ('+glass +vase' IN BOOLEAN MODE)
FROM mytable WHERE groupID = 'B'
グループ B のすべてを返します。それで、私は試しました
SELECT *,
MATCH (title,designer_manufacturer,countryoforigin_materials,additional_info)
AGAINST ('+glass +vase' IN BOOLEAN MODE)
AS SCORE
FROM mytable WHERE groupID = 'B'
ORDER BY SCORE DESC
それでもすべてを返します。必要な結果を最初に置くだけです。
結果を希望するものに制限するにはどうすればよいですか? 「スコア別」とは異なる順序で並べる必要があるため、これは重要です。
ありがとうございました。
赤いフクロウ
ETA: 回答済み
@Vatev の提案で、私は以下を使用しました:
SELECT *
FROM mytable
WHERE MATCH (title, designer_manufacturer, countryoforigin_materials, additional_info)
AGAINST ('+glass +vase' IN BOOLEAN MODE)
AND groupID = 'B'
そして、私が欲しいものだけを手に入れました!どうもありがとうございました。