আমি নির্বাচিত বিবৃতিগুলির পুরো বিভাগের জন্য একটি স্কোর পাওয়ার চেষ্টা করছি
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')
এই জাতীয় ক্ষেত্রে স্কোরগুলি টেবিল প্রতি + হয় তবে এগুলি প্রাসঙ্গিকতার দ্বারা অর্ডার করা হয় না
তবে আমি এই পদ্ধতিটি চেষ্টা করেছিলাম, যা কাজ করছে তবে উত্পাদন যোগ্য নয় is
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
ভাল এই যেমন উপরে স্তর নির্বাচন করুন। (কাজ করা হয়নি)
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
কলাম অন-ফ্লাই তৈরি করা হয়েছে এবং এটি ফুলটেক্সট সূচকটি সমর্থন করে না।
আমার প্রশ্নটি হল কীভাবে আমার ইঞ্জিনটি কাজ করতে এগিয়ে যায়।
- আপনি কি কোনওভাবে
data
পুরোপুরি তৈরি করতে পারেন? - এটি বুলিয়ান মোড যা স্কোরকে সমর্থন করে না other
- এই পুরো বিষয়টিতে এমন কোনও দৃষ্টিভঙ্গি রয়েছে যা এটি কার্যকর করবে? একটি অস্থায়ী টেবিল তৈরি করা এটি সমাধান করে না, ম্যাচের 50% নিয়ম () AGINST () এর পরে একটি কোয়েরি 0 ফলাফল দেয় তবে অনেকগুলি রয়েছে
- কিছু একটা আছে যা আমি মিস করছি?
- একটি ভিউ তৈরি করা কোনওভাবেই কাজ করে না, মাইএসকিউএল VIEWs- এ INDEX-es সমর্থন করে না।
- বুলিয়ান মোডে ব্যবহার করা এবং ম্যানুয়ালি স্কোরিং তৈরি করা ভাল ধারণা?
আমি এই ইস্যুটির জন্য দুই দিনেরও বেশি সময় ধরে কাজ করছি। তাই আমি দয়া করে কিছু সাহায্যের জন্য বলছি। ধন্যবাদ।