- 问题
在SO上已经讨论了很多次了:MySQL的内置全文分析器旨在搜索单词,而不是单个字符,并且默认的最小单词长度设置为3(innodb)或4(myisam)。这些设置意味着短于3或4个单词的单词不会被索引,因此无法通过全文搜索找到。您可以将最小字符长度限制降低到1并重建索引,但是由于索引会更大,因此它将减慢搜索速度。
- 问题
可以,但是您需要
title单独在该字段中进行搜索,并提高该字段的相关性得分结果
title。
您可以使用
union来获得组合列表,
sum()以对任何记录的分数求和:
SELECt p.id, any_value(title), any_value(description), any_value(tags), sum(t.score) as sum_scoreFROM (SELECt id, (MATCH(title) AGAINST ('$search' IN NATURAL LANGUAGE MODE)) *2 AS score FROM pages UNIOn ALL SELECt id, MATCH(description,tags) AGAINST ('$search' IN NATURAL LANGUAGE MODE) AS score FROM pages) tINNER JOIN pages p on t.id=p.idGROUP BY p.idORDER BY sum(t.score) DESC您需要调整全文索引才能进行单独的搜索。



