我正在尝试编写搜索网站数据库的基本搜索引擎的相关功能。让我们以Yelp为例。 (指向页面的直接链接 http://www.yelp.com/search?find_desc=chinese&ns=1&find_loc=New+York%2C+NY)
他们如何确定“最佳匹配”?我猜他们会搜索包含关键字的所有条目至少一次,然后按关键字出现在标题/标签/说明中的次数排序。
按“最高评分”和“评论最多”进行排序,他们会搜索包含关键字的所有条目,然后按平均评分和评论数量进行排序。
我正在使用CodeIgniter与MySQL和Active Records。让我们说我的表'产品'有列'id,name,categories,tags,description'。
答案 0 :(得分:2)
按相关性排序,特别是当涉及关键字/文本时,这不是一项简单的任务。当您处理像Yelp这样的大型数据集时,您需要专门的全文搜索引擎,如Sphinx http://sphinxsearch.com/
Sphinx和类似的搜索引擎允许您根据完整记录中关键字匹配的数量对您的记录进行排序(等等)
如果您的记录集很小,那么我认为您可以通过使用使用LIKE的复杂order by子句来进行相当简单的相关性搜索。