我有一个PHP搜索引擎。通常情况下搜索是可以的。搜索文本是“公司”,在数据库中有“公司”字段......
问题是当搜索文本为&company
或-company
且数据为&company
或-company
时,则不匹配。为什么呢?
-
和&
字符串...
答案 0 :(得分:2)
尝试将搜索字词放在引号中。这应该有助于mysql知道你在全文搜索中的字面意思:
SELECT * FROM tablename MATCH (company) AGAINST ('"&company"' IN BOOLEAN MODE)
SELECT * FROM tablename MATCH (company) AGAINST ('"-company"' IN BOOLEAN MODE)
答案 1 :(得分:1)
如果您使用的是全文搜索,那么&和 - 是保留字符。我找不到任何解决这个问题的好办法。我所做的只是删除特殊字符并运行全文搜索。例如,如果他们正在寻找At& t,我会搜索“AT”“T”,但如果你有噪音,At和A就在那里,你就不会得到任何结果。
另一个解决方案是检测他们何时请求特殊字符并运行LIKE'%& Company%'搜索而不是全文搜索,但这会影响查询的性能。