PHP'智能'搜索引擎搜索Mysql表的建议

时间:2009-12-10 05:59:33

标签: php sql mysql search

我正在为我的基于php的网站创建一个搜索引擎。我需要搜索一个mysql表。

事实上,搜索引擎必须非常'聪明',以便用户可以轻松找到他们的项目(这是一个分类网站)。

我目前使用这段代码设置了一个FULLTEXT搜索:

    MATCH (headline) AGAINST ($querystring)

但这还不够......

例如,假设字段headline包含Bmw 330ci之类的内容。 如果我搜索330,我将无法获得任何结果。结尾('ci')只是汽车模型中许多结局中的一个,在搜索表时必须考虑到这些结局。

或者headline字段是bmw330怎么办?也没有结果,因为它只匹配完整的单词。

或者,如果headlinebmw 330,并且我搜索bmw 520,仍然使用FULLTEXT,我会得到bmw 330,即使我搜索bmw 520 ...不好!

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

在全文搜索方面,想要免费解决方案的人往往倾向于使用SphinxSolr

我没有使用过这两种中的任何一种,但我已多次读过它们很棒,并且易于使用PHP和MySQL。

答案 1 :(得分:0)

您可以尝试显示帮助文本。这意味着如果用户键入BMW,您可以显示详细信息,例如BMW 330CI,BMW 320CI等。作为Google搜索时显示的帮助文本,以便用户可以选择帮助列表。

但我不知道上述想法的实施,对不起。

答案 2 :(得分:0)

不要重新发明轮子:反向索引搜索引擎已经存在,免费,开源,简单而强大。他们拥有满足此类搜索要求所需的一切。

根据您的上下文,您可以选择Apache Lucene [1]等搜索库或Apache Solr [2]或Elastic Search [3]等搜索平台

所有这些都有很好的文档,它们被广泛使用。这极大地减少了学习曲线,即使您从未使用全文搜索世界。

[1] http://lucene.apache.org
[2] http://lucene.apache.org/solr
[2] https://www.elastic.co/products/elasticsearch