2011-08-21 108 views
2

我试图使用狮身人面像API来获取文本结果我得到的是这样的:如何获得文本结果SPHINX

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 

是否有可能获得全文导致类似的名称和描述,而不是上面的阵列?

+0

您能否提供您用于执行查询的PHP代码并生成上面的var_dump()结果? –

+2

等待代码提供额外的信息,简短版本是你应该采取该值,16809,并将其用作SQL查询中的参数'SELECT name,description FROM products_description WHERE id =?' –

+0

我已经提供了php码。请立即检查 – fawad

回答

4

狮身人面像为您提供您的数据库记录的索引,但不保存。 您必须从搜索结果中获取id并写入另一个sql select以从该行获取数据。

1

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

入住这里你需要使用什么:

sql_attr_string explanation in SphinxSearch.com

例如,

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

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_field_string,因为我对文本进行了一些操作,我的意思是,过滤器,命令等等。如果您只需要可以使用sql_attr_string的信息,就像他们在我发布的链接中所解释的那样。

我希望这有助于! :)

最好成绩,

+0

但我听说这个返回的数据将被加载到服务器RAM中。如果我对搜索查询获得大量记录,则可能会影响服务器性能。是对的吗? – fawad

+0

是的,索引内的所有数据都被加载到RAM中。你不能全部获得:),但是如果你想在搜索结果页面显示结果,例如只有几个字段作为attribs,那么它很有用。 – nonainobcn