लेकिन मैं TST-डीएफएस कैसे मेल खाते हैं, तो उपयोगकर्ता TST डीएफएस में टाइप?
मैं चाहूँगा की प्रासंगिकता है कि SKU 8 कहते हैं, पूरे 10 के बजाय ..
अगर मैं सवाल का अधिकार मिल गया, इस सवाल का जवाब वास्तव में आसान है।
ठीक है, अगर आप फोर्ज अपनी क्वेरी को mysql पर भेजने से पहले थोड़ा सा प्रश्न पूछें।
ठीक है, मान लें कि हमारे पास $query
है और इसमें TST-DFS
है।
क्या हम शब्द स्पैन पर ध्यान केंद्रित कर रहे हैं? मुझे लगता है हम चाहिए, के रूप में सबसे खोज इंजन है, इसलिए:
$ok=preg_match_all('#\w+#',$query,$m);
अब अगर उस पैटर्न का मिलान नहीं हुआ ... $m[0]
शब्द $query
में की सूची है।
यह आपके एसकेयू के लिए ठीक से ट्यून किया जा सकता है, लेकिन एक और फैशन में पूर्ण शब्दों के खिलाफ मिलान करना उपयोगकर्ता अनुमान लगा रहा है।
(के रूप में यह गूगल और याहू से अधिक होता है) तो हम एक $expr
अभिव्यक्ति इंजेक्ट किया जाएगा कि हमारे अंतिम क्वेरी में पकाने के लिए की जरूरत है।
if(!$ok) { // the search string is non-alphanumeric
$expr="false";
} else { // the search contains words that are no in $m[0]
$expr='';
foreach($m[0] as $word) {
if($expr)
$expr.=" AND "; // put an AND inbetween "LIKE" subexpressions
$s_word=addslashes($word); // I put a s_ to remind me the variable
// is safe to include in a SQL statement, that's me
$expr.="word LIKE '%$s_word%'";
}
}
अब $expr
तरह "words LIKE '%TST%' AND words LIKE '%DFS%'"
कि मूल्य के साथ दिखना चाहिए, हम अंतिम क्वेरी निर्माण कर सकते हैं:
$s_expr="($expr)";
$s_query=addslashes($query);
$s_fullquery=
"SELECT (Product,word,if((word LIKE '$s_query'),relevancy,relevancy-2) as relevancy) ".
"FROM some_index ".
"WHERE word LIKE '$s_query' OR $s_expr";
कौन सा पढ़ा होगा, "TST-डीएफएस" के लिए:
SELECT (Product,word,if((word LIKE 'TST-DFS'),relevancy,relevancy-2) as relevancy)
FROM some_index
WHERE word LIKE 'TST-DFS' OR (word LIKE '%TST%' AND word LIKE '%DFS%')
जैसा कि आप देख सकते हैं, पहले SELECT
लाइन में, अगर मैच आंशिक है, mysql वापस आ जाएगी प्रासंगिकता-2
तीसरे एक में, WHERE
खंड, यदि पूर्ण मैच में विफल रहता है, $s_expr
, आंशिक मिलान क्वेरी हम अग्रिम में पकाया जाता है, की कोशिश की है बजाय।
आप MySQL के 'FULLTEXT' क्षमताओं का उपयोग नहीं कर सकते, या कि तुम क्या मतलब है जब आप कहते हैं कि" सूचकांक "क्या है? – Bojangles
समस्या यह है कि मेरे पास बहुत सारी जानकारी है जो महत्वपूर्ण है, लेकिन MySQL के FULLTEXT को यह नहीं पता है कि यह महत्वपूर्ण है (जैसे स्कू संख्या, उत्पाद का नाम, और अन्य निश्चित शब्द)। तो मैं प्रत्येक उत्पाद में प्रत्येक शब्द को अनुक्रमणित कर रहा हूं, और मुझे विश्वास नहीं है कि MySQL का FULLTEXT मुझे प्रत्येक पंक्तियों के माध्यम से खोजने में मदद करेगा। – Ben
ओह ठीक है। जहां तक मैं देख सकता हूं, नहीं, 'FULLTEXT' बिल्कुल उपयोगी नहीं होगा। वास्तव में एक शर्म की बात है, क्योंकि यह MySQL का एक अद्भुत हिस्सा है। – Bojangles