【问题标题】:Filter search results sphinx过滤搜索结果 sphinx
【发布时间】:2012-09-24 18:39:20
【问题描述】:

我已经设置了 sphinx 并且可以使用 php api 执行搜索。但我有两个问题。

  1. 在这个测试数据库中,我有许多产品,每个产品都有一个类别 ID。我将如何创建过滤功能,以便搜索后的用户只能从特定类别中检索结果。也就是说,首先我搜索汽车并获得 10 个匹配项,然后我选择福特类别并仅获得 3 个匹配项,即具有福特类别的汽车。

  2. 我对 sphinx 是搜索我的索引还是直接搜索 db 感到有些困惑。我以为它搜索了索引,但后来我更改了数据库中的文本并进行了搜索但没有重新索引,我对文本所做的更改显示在结果中。

一如既往地感谢所有帮助!

【问题讨论】:

    标签: php search sphinx


    【解决方案1】:

    要创建过滤器,您必须将属性添加到数据源(不要忘记在 SQL 查询中选择它SELECT category_id, ...):

    sql_attr_uint = category_id
    

    然后你就可以从你的 PHP 代码中添加一个过滤器了:

    $s->SetFilter('category_id', array(43));
    

    对于第二个问题,您需要运行索引器来更新数据。

    【讨论】:

    • 感谢您的回答!我尝试了过滤功能,它工作正常。但是,我仍然对索引感到困惑。我现在在没有重新索引的情况下更改了数据库中的文本,并且在我搜索时出现了更改。这不应该是吗?
    • @user1009453 所以你的意思是你添加了一个新的关键字,搜索了那个关键字,它在结果中被返回了?不先运行indexer
    • 对不起,我的错,我没有先了解索引。确实显示了具有更改内容的 ROW,但搜索新内容时未返回任何 ROW。再次感谢!
    猜你喜欢
    • 2010-09-26
    • 1970-01-01
    • 2013-02-02
    • 2012-07-05
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    相关资源
    最近更新 更多