【问题标题】:Sphinx and user ranking狮身人面像和用户排名
【发布时间】:2013-06-20 18:51:04
【问题描述】:

我有下面的mysql表,

id, text, rank

每次我插入一篇文章我都会像这样将排名设置为1,

1, blah blah, 1

那么如果超过一个人阅读此文本,则排名将增加一。

所以我需要根据关键字和排名对以下 2 个文本进行 sphinx 搜索。

1, blah blah, 2
2, blah blah blah, 6

所以如果用户搜索关键字“blah”,那么结果应该是

2, blah blah blah, 6 //first as the ranking is higher
1, blah blah, 2

我不知道该怎么做,我需要在 sphinx 中搜索关键字,然后根据排名对文档的结果进行排序吗?这不好。

或者,sphinx 中有什么东西可以解决这类问题吗?

我一直在阅读有关 sphinx 文档的排名,但它看起来与文本本身和单词的权重有关。

【问题讨论】:

    标签: mysql full-text-search sphinx


    【解决方案1】:

    使用 Sphinx,您可以将“排名”设置为索引中的整数属性。

    属性,直接存储在索引中,可用于排序、过滤等。

    然后可以按属性(而不是按计算的全文权重)对结果进行排序

    http://sphinxsearch.com/docs/current.html#attributes

    http://sphinxsearch.com/docs/current.html#sorting-modes

    【讨论】:

    • 所以如果我理解正确的话,我需要更新数据库中的排名字段,然后搜索应该根据该字段进行排序吗?顺便说一句,我需要在 sql 更新后重新索引吗?
    • 每当源数据发生变化或 SQL 发生变化时,您都需要重建索引。即索引器建立一个静态索引。要应用更改,索引已重新构建。
    • 好的,那么是否可以在索引中设置属性,然后我将更新索引中属性的值而不是更新数据库?
    • 嗯,有sphinxsearch.com/docs/current.html#api-func-updateatttributes :) 所以可以随时更新属性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多