5

たとえば、姓がAshso の人を検索し、クエリで を検索しAshます。Ashley、Ashby などの姓を持つ人は表示されますが、Ash という正確な姓を持つ人は表示されません。

これは私のSQLがどのように見えるかの例です:

SELECT * FROM `People`
WHERE MATCH(PersonFirstName, PersonLastName) AGAINST('ash*' IN BOOLEAN MODE) LIMIT 20

MATCH AGAINSTがそれを見つけるために、3文字以上でなければならないというある種の規則はありますか?

4

2 に答える 2

8

全文検索で索引付けされる単語の最小長を指定するシステム変数ft_min_word_lenを参照してください。デフォルトでは 4 に設定されているため、3 文字の単語は全文検索では見つかりません。全文検索のパラメーターの詳細については、12.9.6 を参照してください。MySQL 全文検索の微調整. そのページは次のように説明しています。

たとえば、3 文字の単語を検索可能にする場合は、オプション ファイルに次の行を追加して ft_min_word_len 変数を設定できます。

[mysqld]
ft_min_word_len=3

次にサーバーを再起動し、FULLTEXT インデックスを再構築します。特に、このリストに続く手順の myisamchk に関する注意事項に注意してください。

于 2013-07-22T20:41:11.540 に答える
0

これを試しましたか SELECT * FROM People WHERE MATCH(PersonFirstName, PersonLastName) AGAINST('* ash*' IN BOOLEAN MODE) LIMIT 20

于 2013-07-22T20:41:23.677 に答える