Php 如何在SPHINX中获得文本结果

Php 如何在SPHINX中获得文本结果,php,sphinx,Php,Sphinx,我正在尝试使用Sphinx API获得文本结果,我得到的结果如下: 16809 Array ( [error] => [warning] => [status] => 0 [fields] => Array ( [0] => name [1] => description ) [attrs] => Array ( ) [matches] => Array (

我正在尝试使用Sphinx API获得文本结果,我得到的结果如下:

16809 Array (
    [error] =>
    [warning] =>
    [status] => 0
    [fields] => Array (
        [0] => name
        [1] => description
    )
    [attrs] => Array ( )
    [matches] => Array (
        [16809] => Array ( [weight] => 2 [attrs] => Array ( ) )
    )
    [total] => 1
    [total_found] => 1
    [time] => 0.000
    [words] => Array (
        [radell] => Array (
            [docs] => 1
            [hits] => 2
        )
    )
)
我在sphinx.conf中使用了以下附加行:

sql_query                       = \
            SELECT \
                    id, name, description \
            FROM \
                    products_description;
sql_field_string = name
   sql_query_info = SELECT * FROM products_description WHERE id=$id

有没有可能得到像name和description这样的全文结果而不是上面的数组?

好的,我想你可以从Sphinx的1-10beta版本中获得字符串数据。 您可以将所需字段作为属性添加到源定义中

在此处检查您需要使用的内容:

比如说,

我有一个包含事件数据的索引:

sql_query = \
            SELECT\
                    p.place_id,\
                    p.place_id as place_id_attr,\
                    ...
                    ...
            FROM\
                    places p\
                    .......
                    ....
            GROUP BY\
                    p.place_id

    sql_attr_uint = place_id_attr
    sql_field_string = title
    sql_field_string = title_normalized
    sql_field_string = subtitle
    sql_field_string = description
    ....
这样,就可以从attrs数组中的php代码中获得字段

一个重要的细节:我使用sql_字段_字符串,因为我对文本进行了一些操作,我的意思是,过滤器、命令等等。如果你只需要这些信息,你可以使用sql属性字符串,正如他们在我发布的链接中解释的那样

我希望这有帮助!:


最好,

Sphinx为您提供数据库记录的索引,但不存储它。
您必须从搜索结果中获取id,并编写另一个sql select以从该行获取数据。

能否提供用于执行查询并生成上述var_dump结果的PHP代码?在该代码提供其他信息之前,短版本是您应取该值,16809,并将其用作查询中的参数,以SQL从products_description中选择name、description,其中id=?我提供了php代码。请现在检查谢谢,你已经解决了我的问题。你是对的。我可以使用该ID号获取文本记录。Sphinx不保存它索引的文本。无法获取结果中文本字段的内容。你只能知道他们是否匹配。返回的值将仅是属性,并且在文档ID中。这是Sphinx搜索的主要概念。所以编译器提出的方法是唯一的方法,但我听说返回的数据将被加载到服务器RAM中。如果我在搜索查询中获得大量记录,服务器性能就会受到影响。是吗?是的,索引中的所有数据都加载到RAM中。您无法获取全部内容:,但如果您希望在搜索结果页面中显示结果,例如,仅将少数字段显示为attrib,则此功能非常有用。