【问题标题】:CakePHP search by relevanceCakePHP 按相关性搜索
【发布时间】:2012-12-22 18:49:22
【问题描述】:

我正在开发一个招聘网站,我想通过相关性搜索招聘广告,例如,我有诸如职位名称、job_text 之类的字段。现在假设一个人搜索 cakephp,我想先得到 cakephp 的结果,然后他们说 php 也匹配,但 cakephp 显然是最相关的。我该怎么做?

【问题讨论】:

  • 如果一个人专门搜索cakephpphp 将如何匹配?仅仅从单词中截取部分是没有任何意义的。使用这种逻辑,搜索automobile 也会返回手机结果。你不是说反过来吗?
  • 假设我输入了一个 php 搜索,它会得到标题为 php 和 php 在正文中某处的招聘广告的结果,这将是最相关的,如果在正文中有 php 但没有在标题中,磁贴可能是“Web 开发人员”,这个结果将不太相关,如果单词 php 本身没有出现在第三个招聘广告中,假设它只包含 cakephp,这个将是最不相关。很抱歉第一次出现混淆和不当示例。

标签: cakephp sorting search cakephp-2.1 relevance


【解决方案1】:

我的建议是您应该运行多个查询以进行排序。

例如,首先您使用order by title desc 查找title 为php 的职位,然后运行查询以查找职位关键字中出现“php”的职位,最后您可以运行查询以查找有描述的职位里面有“php”这个词。

然后您可以组合这些查询的结果。

【讨论】:

    【解决方案2】:

    我发现在那个阶段做我想做的最好的方法是与 apache solr 或一些类似的搜索引擎集成。

    【讨论】:

      【解决方案3】:

      如果您想按相关性进行排序必须提出一些标准来确定相关性如何为您定义并计算它。例如,如果某篇文章获得了更多浏览量,则它可能比另一篇文章更相关,因为它被更多人看到。将该数字与其他一些变量(平均评分,例如,如果有评分功能)结合起来,根据它们计算相关性值,将其存储在您的表中并按相关性值字段排序。每次用于计算的变量之一发生更改时更新它,或者每天通过 cron 作业执行一次,这完全取决于您的要求和性能。

      【讨论】:

        猜你喜欢
        • 2011-01-26
        • 2012-03-02
        • 2011-04-01
        • 2010-09-25
        • 2012-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-05
        相关资源
        最近更新 更多