0

MySQL 5.5 の最新バージョンを使用しています。

全文検索専用に生成されたテーブルの複数の列にまたがる全文インデックスがあります (データベース内の他のテーブルは innodb を使用します)。

somedata_search
========
id
name
about
note
dislike

ID を除くすべての列にフルテキスト インデックスがあります。以下を使用して全文検索を実行できます。

 SELECT * FROM account_search WHERE MATCH(name, about, note, dislike) AGAINST('mykeyword*' IN BOOLEAN MODE);

これはすべて正常に機能しますが、各行の一致がどの列から発生したかを判断する方法はありますか? 行の列全体で一致する場合は、最初の列だけで十分です。

4

1 に答える 1

1

それを取得する「ネイティブ」な方法はないと思いますが、とにかくそれを行うことは可能です。

これが速いかどうかはわかりませんが、正しいデータを返します

select text_test.*,
       match(name) against ('dude' in boolean mode) as name_match, 
       match(info) against ('dude' in boolean mode) as info_match 
  from text_test 
 where match(name, info) against ('dude' in boolean mode);

http://sqlfiddle.com/#!2/5159c/1

于 2012-04-18T13:05:30.243 に答える