मैं सेलेक्ट स्टेटमेंट्स के पूरे सेक्शन के लिए स्कोर बनाने की कोशिश कर रहा हूं
SELECT *,MATCH(`result`) AGAINST('keyword') as `score` FROM `table1` WHERE MATCH(`result`) AGAINST('keyword')
UNION
SELECT *,MATCH(`content`) AGAINST('keyword') as `score` FROM `table2` WHERE MATCH(`content`) AGAINST('keyword')
UNION
SELECT *,MATCH(`text`) AGAINST('keyword') as `score` FROM `table3` WHERE MATCH(`text`) AGAINST('keyword')
ऐसे मामलों में स्कोर प्रति तालिका + हैं वे प्रासंगिकता के अनुसार नहीं दिए जाते हैं
लेकिन मैंने इस पद्धति की कोशिश की, जो काम कर रही है लेकिन उत्पादन के लायक नहीं है
SELECT * FROM (
SELECT *,MATCH(`result`) AGAINST('keyword') as `score` FROM `table1` WHERE MATCH(`result`) AGAINST('keyword')
UNION
SELECT *,MATCH(`content`) AGAINST('keyword') as `score` FROM `table2` WHERE MATCH(`content`) AGAINST('keyword')
UNION
SELECT *,MATCH(`text`) AGAINST('keyword') as `score` FROM `table3` WHERE MATCH(`text`) AGAINST('keyword')
) as `combined` ORDER BY `score` DESC
उपरोक्त कोड को नापसंद किया गया है क्योंकि स्कोर प्रति तालिका हैं, वे शामिल हो गए हैं और आदेश दिए गए हैं। एक बुरा तरीका।
तो मैंने इसके MATCH() AGAINST()
लिए data
TOP LEVEL SELECT में भी प्रयास किया। (DIDN'T WORK)
SELECT *,MATCH(`data`) AGAINST('keyword') as `good_score` FROM (
SELECT *,`result` as `data`,MATCH(`result`) AGAINST('keyword') as `score` FROM `table1` WHERE MATCH(`result`) AGAINST('keyword')
UNION
SELECT *,`content` as `data`,MATCH(`content`) AGAINST('keyword') as `score` FROM `table2` WHERE MATCH(`content`) AGAINST('keyword')
UNION
SELECT *,`text` as `data`,MATCH(`text`) AGAINST('keyword') as `score` FROM `table3` WHERE MATCH(`text`) AGAINST('keyword')
) as `combined` ORDER BY `good_score` DESC
उपरोक्त कथन मेरे लिए एकदम सही है, लेकिन यह काम नहीं करता है क्योंकि data
कॉलम ऑन-द-फ्लाई बनाया गया है और यह फुलटैक्स INDEX का समर्थन नहीं करता है।
मेरा सवाल यह है कि अपने इंजन को काम करने के लिए कैसे आगे बढ़ाया जाए।
- क्या आप किसी तरह
data
फुलटेक्स्ट बना सकते हैं - क्या इसमें BOOLEAN MODE के अलावा अन्य काम करने का कोई तरीका है जो स्कोर का समर्थन नहीं करता है
- क्या इस पूरे विषय के लिए एक दृष्टिकोण है जो इसे काम करेगा? एक अस्थायी तालिका बनाने से यह हल नहीं होता है, MATCH का 50% नियम () AGAINST () क्वेरी रिटर्न 0 परिणाम देता है, लेकिन कई हैं
- शायद वहाँ कुछ है जो मुझे याद है?
- VIEW बनाना या तो काम नहीं करता है, MySQL, VIEWs पर INDEX-es का समर्थन नहीं करता है।
- शायद यह BOOLEAN MODE में उपयोग करने और मैन्युअल रूप से स्कोरिंग बनाने के लिए एक अच्छा विचार है?
मैं इस मुद्दे पर दो दिनों से अधिक समय से काम कर रहा हूं। इसलिए मैं आपसे कुछ मदद माँगता हूँ। धन्यवाद।