mysql — Sphinxql — Как использовать запрос с порядком при использовании Sphinxql в PHP без использования sphinxapi.Stack Overflow

я использую mysql FTS, но недавно переключился на sphinx для целей тестирования.

установлен сфинкс на сентос 7

Linux production 3.10.0-123.8.1.el7.x86_64 #1 GNU/Linux

sphinx.conf

source content_src1
{
type            = mysql
sql_host        = localhost
sql_user        =
sql_pass        =
sql_db          = t_prod2
sql_port        = 3306  # optional, default is 3306

sql_query       = \
SELECT content.record_num, \
content.title, \
content.category, \
content.upload_date, \
content.comments_count, \
content.verified, \
content.uploader, \
content.size \
FROM content WHERE enabled = 1

sql_attr_uint       = record_num
sql_attr_string = title
}


index content_index1
{
source          = content_src1
path            = /var/lib/sphinx/content_index1
morphology              = stem_en

min_word_len            = 1
min_prefix_len          = 0
min_infix_len           = 1
docinfo                 = extern

}

я использую php для подключения sphinxql и выполнения запросов.

$sphinxql = @mysqli_connect($sphinxql_host.':'.$sphinxql_port,'','');

$sphinxql_query = "SELECT id FROM $sphinx_index WHERE MATCH('".mysqli_real_escape_string($prod1,$q)."') LIMIT  $from,$max_results";

простые запросы работают нормально, то есть запросы без какого-либо порядка по условию.
но когда я попытался запустить sql запросы, имеющие порядок по, sphinx выдает ошибки.

то есть
запрос и их ошибки.

SELECT id FROM $sphinx_index WHERE MATCH('".mysqli_real_escape_string($prod1,$q)."') ORDER BY title DESC LIMIT  $from,$max_results

index content_index1: sort-by attribute 'title' not found

Еще одна попытка, я заменил имя поля на имя @field

SELECT id FROM $sphinx_index WHERE MATCH('".mysqli_real_escape_string($prod1,$q)."') ORDER BY @title DESC LIMIT  $from,$max_results

sphinxql: syntax error, unexpected USERVAR, expecting IDENT (or 55 other tokens) near '@title DESC LIMIT 0,25'

таблица имеет порядок по полям, таким как заголовок, категория, дата загрузки, размер, проверено

так как я могу использовать порядок в моем запросе sphinxql


обновление 1

Мне удалось выполнить запросы «не по порядку», но запросы, имеющие «по порядку», не работают должным образом, не выдают ошибку, дают наборы результатов, но если я изменю направление сортировки по атрибуту, наборы результатов не изменятся.

обновленные поля и атрибуты как.

sql_field_string = title
sql_field_string = og_name
sql_field_string = hash
sql_field_string = keywords

sql_attr_timestamp = upload_date_timestamp

sql_attr_uint = category
sql_attr_uint = comments_count
sql_attr_bool = verified
sql_attr_bigint = size

12

Решение

Вы пытались использовать этот столбец как sql_attr_string?

http://sphinxsearch.com/docs/current.html#conf-sql-attr-string

Вам нужна как минимум версия 2.0.1, чтобы использовать предложение ORDER BY для такого атрибута:

Начиная с 2.0.1-бета, строковые атрибуты могут использоваться для сортировки и группировки (ORDER BY, GROUP BY, WITHIN GROUP ORDER BY).

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]