का उपयोग किए बिना PHP में स्फिंक्सक्ल का उपयोग करते समय क्वेरी के क्रम में क्वेरी का उपयोग कैसे करें, मैं mysql FTS का उपयोग कर रहा हूं, लेकिन हाल ही में परीक्षण उद्देश्य के लिए स्फिंक्स पर स्विच किया गया है। centos परस्फिंक्सक्ल - sphinxapi.php
स्थापित स्फिंक्स 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 कनेक्ट और प्रश्नों को चलाने के लिए, .like इस
$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";
सरल प्रश्न है ठीक काम कर रहा है, यानी शर्त के बिना किसी आदेश के प्रश्न। लेकिन जब मैंने क्रमशः एसक्यूएल प्रश्नों को चलाने की कोशिश की, तो स्फिंक्स त्रुटियों को फेंक रहा है।
यानी क्वेरी और उनकी त्रुटियां।
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
शायद आवश्यकता पर शीर्षक COLLATE utf8_general_ci डीईएससी द्वारा आदेश निर्दिष्ट करें –