使用空列的mysql全文搜索

时间:2009-04-16 03:54:44

标签: mysql full-text-search

我正在尝试在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,则不返回该行。

我想我应该创建一个视图,所以我做了但后来我无法弄清楚如何将全文索引添加到该视图

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

这些字段的FAR太小,无法进行全文搜索。另外,你必须制作你的桌子MyIsam,这通常不如InnoDb。

您想在此处使用LIKE运算符。

答案 1 :(得分:0)

如果您尝试匹配街道号码或“Ln”等缩写词,请确保在[mysqld]下的my.cnf下设置低于默认值4的设置:

ft_min_word_len=2

我已将此用于地理数据,用户希望搜索2个字母的州缩写等 - 当您第一次意识到索引中缺少短字时,它会迷失方向。当然,您必须在更改ft_min_word_len值后重建索引。