0

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'

そして、私が欲しいものだけを手に入れました!どうもありがとうございました。

4

0 に答える 0