我在PHP中有一个搜索引擎。通常情况下,搜索可以。搜索文本是“公司”,并在数据库中存在“公司”在该领域...mysql中' - '和'&'字符串的问题
问题是,当搜索文本是&company
或-company
和数据是&company
或-company
没有匹配。为什么?
问题与-
和&
串...
我在PHP中有一个搜索引擎。通常情况下,搜索可以。搜索文本是“公司”,并在数据库中存在“公司”在该领域...mysql中' - '和'&'字符串的问题
问题是,当搜索文本是&company
或-company
和数据是&company
或-company
没有匹配。为什么?
问题与-
和&
串...
尝试把你的搜索词在引号。这应该可以帮助MySQL的知道你在全文检索的字面意思是这些字符:
SELECT * FROM tablename MATCH (company) AGAINST ('"&company"' IN BOOLEAN MODE)
SELECT * FROM tablename MATCH (company) AGAINST ('"-company"' IN BOOLEAN MODE)
如果您正在使用全文搜索,则&和 - 是保留字符。我找不到解决这个问题的好办法。我所做的只是删除特殊字符并运行全文搜索。例如,如果他们正在寻找At & t我搜索了“AT”“T”,但是如果您有噪音词At和A在那里,并且您不会得到任何结果。
另一种解决方案是检测他们何时请求特殊字符并运行公司%搜索而不是全文搜索,但这会影响查询的性能。
如果您有权访问mysql,似乎可以更改单词字符:请参阅http://dev.mysql.com/doc/refman/5.0/en/fulltext-fine-tuning.html中的注释 – 2010-01-15 17:37:27
使用全文搜索? &和 - 是全文中的保留字符。 (至少在MSSQL中) – 2010-01-15 17:06:56
@Jose Chama:在mySQL中,至少是'-'。 – 2010-01-15 17:08:39
是的,全文搜索 – 2010-01-15 17:11:17