带空列的mysql全文搜索

带空列的mysql全文搜索,mysql,full-text-search,Mysql,Full Text Search,我正在尝试在mysql数据库上进行全文搜索。问题是有些字段可以保留为空。例如,我有一个带列的基本地址表 街线1 街线2 城市 陈述 拉链 现在这些都不是必需的,所以它们中的任何一个都可以为null。当我进行全文搜索时 SELECT *, (MATCH (StreetLine1, StreetLine2, City, State, Zip) AGAINST ('+{0}*' IN BOOLEAN MODE)) AS Relevance FROM Address HAVING Relevan

我正在尝试在mysql数据库上进行全文搜索。问题是有些字段可以保留为空。例如,我有一个带列的基本地址表

街线1

街线2

城市

陈述

拉链

现在这些都不是必需的,所以它们中的任何一个都可以为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,则不返回该行

我想我应该创建一个视图,所以我这样做了,但是我不知道如何将全文索引添加到该视图中


有什么建议吗?

这些字段太小,无法进行全文搜索。另外,您必须使您的表成为MyIsam,这通常比InnoDb更不合适


您想在此处使用
LIKE
操作符。

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

ft_min_word_len=2
我曾将其用于地理数据,用户希望搜索两个字母的州缩写,等等——当你第一次意识到索引中没有短词时,这会让你迷失方向。当然,您必须在更改
ft\u min\u word\u len
值后重建索引