我正在开发一个招聘网站,在那里我想通过相关的招聘广告搜索,我有字段,如职称,job_text例如。现在让我们假设一个人搜索cakephp,我想先得到cakephp的结果,然后再输入php,这也匹配,但cakephp显然是最相关的。我该怎么做呢?
我的建议是您应该运行多个查询以进行排序。
例如,首先您使用order by title desc
查找标题为php的职位,然后运行查询以查找职位关键字中出现"php"的职位,最后您可以运行查询以查找描述中包含"php"的职位。
然后您可以将这些查询的结果组合在一起。
我发现在那个阶段我想做的最好的方法是集成apache solr或一些类似的搜索引擎。
如果您想按相关性排序,您将不得不提出一些如何为您定义并计算相关性的标准。例如,如果某篇文章获得了更多的浏览量,那么可能比另一篇文章更相关,因为它被更多的人看到了。将该数字与其他一些变量(例如,如果有评级功能,则将平均评级)结合起来,计算基于它们的相关性值,将其存储在表中,并按相关性值字段排序。每次计算变量之一更改时更新它,或者每天通过cron作业进行一次,这完全取决于您的需求和性能。