Как получить текстовый результат в SPHINX - PullRequest
2 голосов
/ 21 августа 2011

Я пытаюсь использовать 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

Можно ли получить полный текстовый результат, такой как имя и описание, вместо указанного выше массива?

Ответы [ 2 ]

4 голосов
/ 24 августа 2011

Sphinx предоставляет вам индекс вашей записи в базе данных, но не сохраняет ее.Вы должны извлечь идентификатор из результата поиска и написать еще один SQL-выбор для извлечения данных из этой строки.

1 голос
/ 22 августа 2011

Хорошо, я думаю, что вы можете получить строковые данные из 1-10-бета-версии Sphinx. Вы можете добавить необходимые поля в качестве атрибутов в определении источника.

Отметьте здесь, что вам нужно использовать:

Объяснение sql_attr_string в 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
    ....

Таким образом, ваши поля доступны из кода php внутри массива attrs.

Одна важная деталь: я использую sql_field_string, потому что я делаю некоторые операции с текстами, я имею в виду фильтры, заказы и так далее. Если вам нужна только информация, вы можете использовать sql_attr_string, как они объясняют в ссылке, которую я разместил.

Надеюсь, это поможет! :)

Bests

...