2010-01-15 61 views
4

我在PHP中有一个搜索引擎。通常情况下,搜索可以。搜索文本是“公司”,并在数据库中存在“公司”在该领域...mysql中' - '和'&'字符串的问题

问题是,当搜索文本是&company-company和数据是&company-company没有匹配。为什么?

问题与-&串...

+1

使用全文搜索? &和 - 是全文中的保留字符。 (至少在MSSQL中) – 2010-01-15 17:06:56

+0

@Jose Chama:在mySQL中,至少是'-'。 – 2010-01-15 17:08:39

+0

是的,全文搜索 – 2010-01-15 17:11:17

回答

2

尝试把你的搜索词在引号。这应该可以帮助MySQL的知道你在全文检索的字面意思是这些字符:

SELECT * FROM tablename MATCH (company) AGAINST ('"&company"' IN BOOLEAN MODE) 

SELECT * FROM tablename MATCH (company) AGAINST ('"-company"' IN BOOLEAN MODE) 
1

如果您正在使用全文搜索,则&和 - 是保留字符。我找不到解决这个问题的好办法。我所做的只是删除特殊字符并运行全文搜索。例如,如果他们正在寻找At & t我搜索了“AT”“T”,但是如果您有噪音词At和A在那里,并且您不会得到任何结果。

另一种解决方案是检测他们何时请求特殊字符并运行公司%搜索而不是全文搜索,但这会影响查询的性能。

+1

如果您有权访问mysql,似乎可以更改单词字符:请参阅http://dev.mysql.com/doc/refman/5.0/en/fulltext-fine-tuning.html中的注释 – 2010-01-15 17:37:27