我正在为我的基于php的网站创建一个搜索引擎。我需要搜索一个mysql表。
事实上,搜索引擎必须非常'聪明',以便用户可以轻松找到他们的项目(这是一个分类网站)。
我目前使用这段代码设置了一个FULLTEXT搜索:
MATCH (headline) AGAINST ($querystring)
但这还不够......
例如,假设字段headline
包含Bmw 330ci
之类的内容。
如果我搜索330
,我将无法获得任何结果。结尾('ci')只是汽车模型中许多结局中的一个,在搜索表时必须考虑到这些结局。
或者headline
字段是bmw330
怎么办?也没有结果,因为它只匹配完整的单词。
或者,如果headline
为bmw 330
,并且我搜索bmw 520
,仍然使用FULLTEXT,我会得到bmw 330
,即使我搜索bmw 520
...不好!
我该如何解决这个问题?
答案 0 :(得分:3)
答案 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