我正在尝试在mysql数据库上进行全文搜索。问题是某些字段可以保留为null。例如,我有一个带列
的基本地址表StreetLine1
StreetLine2
市
国家
邮编
现在这些都不是必需的,因此其中任何一个都可以为null。当我进行全文搜索时
SELECT *,
(MATCH (StreetLine1, StreetLine2, City, State, Zip)
AGAINST ('+{0}*' IN BOOLEAN MODE)) AS Relevance
FROM Address
HAVING Relevance > 0
Order By Relevance Desc
{0}只是一个占位符
如果没有字段为空,则效果很好。但是如果其中一个为null,则不返回该行。
我想我应该创建一个视图,所以我做了但后来我无法弄清楚如何将全文索引添加到该视图
有什么建议吗?
答案 0 :(得分:1)
这些字段的FAR太小,无法进行全文搜索。另外,你必须制作你的桌子MyIsam,这通常不如InnoDb。
您想在此处使用LIKE
运算符。
答案 1 :(得分:0)
如果您尝试匹配街道号码或“Ln”等缩写词,请确保在[mysqld]
下的my.cnf
下设置低于默认值4的设置:
ft_min_word_len=2
我已将此用于地理数据,用户希望搜索2个字母的州缩写等 - 当您第一次意识到索引中缺少短字时,它会迷失方向。当然,您必须在更改ft_min_word_len
值后重建索引。