2009-04-16 51 views
0

我想在mysql数据库上进行全文搜索。问题是一些字段可以留空。比如我有列mysql全文搜索与空列

StreetLine1

StreetLine2

市基本地址表

国家

邮编

现在这些都不打算被要求如此任何一个t下摆可能为空。当我做我的全文搜索

SELECT *, 
(MATCH (StreetLine1, StreetLine2, City, State, Zip) 
AGAINST ('+{0}*' IN BOOLEAN MODE)) AS Relevance 
FROM Address 
HAVING Relevance > 0 
Order By Relevance Desc 

{0}只是一个占位符

如果没有一个字段为空它的伟大工程。但是,如果其中一个为空,则不会返回该行。

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

有什么建议?

回答

1

这些字段对于全文搜索而言太小而无法成为您想要执行的操作。另外,您必须制作MyIsam表格,这通常比InnoDb更不合适。

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

0

请确保您有,[mysqld]下你my.cnf,设置比默认的4下,如果你想匹配的东西像门牌号码或缩写,如“LN”等:

ft_min_word_len=2 

我有用于地理数据,用户想要搜索2个字母的州名缩写等 - 当你第一次意识到索引中没有短文时,它会迷失方向。当然,您必须在更改ft_min_word_len值后重建索引。