TABLE ITEMS: (id, name)
1| chicken
2| potato
QUERY:MySQLでの照合を使用する方法
select * from items where match(name) against('tato');
空のセットが返されています。作品とのマッチを理解していないのですか?
TABLE ITEMS: (id, name)
1| chicken
2| potato
QUERY:MySQLでの照合を使用する方法
select * from items where match(name) against('tato');
空のセットが返されています。作品とのマッチを理解していないのですか?
てみ使用する:
SELECT * FROM items
WHERE INSTR(name, 'tato') > 0
または
SELECT * FROM items
WHERE name LIKE '%tato'
構文、使用しているが、正しいと思われます。あなたはその分野でフルテキストを有効にしていますか?
ALTER TABLE items ADD FULLTEXT(name);
FULLTEXTインデックスは一部の単語マッチをサポートしているとは思いません。このようなものについては、Marcoが記述した構造のうちの1つを使用する方がよいでしょう。
特殊な演算子を使用してMATCH AGAINSTの動作を変更しない限り、正しいです。 MATCH AGAINSTは、あなたが期待していないかもしれない奇妙なことをすることもできます。たとえば、定義されたストップワードやDB内で頻繁に発生する単語は無視されます。また、ft_min_word_lenシステム変数を満たさない単語は無視されます。これらの理由から、私は強くMarcoの提案を取ってINSTRやLIKEを代わりに使うことを強くお勧めします(ただし、LIKE '%tato%'は文字列のどこにでもtatoを出すために使用します)。 – David
これはインデックスを使用せず、完全なテーブルスキャンを行います。大規模なテーブルでは、この方法は機能しません。 –
@KenMazaika:OPは "大きなテーブル"について話しませんでした...とにかく、あなたはもっと良いアイデアを持っていますか? – Marco