ស្វែងយល់ពី Full Text Search នៅក្នុង MySQL (វគ្គ៣)
ក្នុងអត្ថបទមុន បានបង្ហាញលំអិតអំពីការប្រើប្រាស់ Boolean Full Text Search ។ ក្នុងអត្ថបទនេះដែរ យើងខ្ញុំនឹងបង្ហាញ នូវប្រភេទនៃ Full Text Search ទៀតគឺ Natural Language Search ។ Natural language Search បកប្រែ String ដែលស្វែងរក ឲ្យទៅជា Free Text (ភាសាមនុស្សជាតិ) ហើយក៏មិនត្រូវការ Operator ពិសេសនោះដែរ ។
២. Natural Language Full Text Search
ការប្រើប្រាស់ Natural Language Full Text Search ត្រូវបានបញ្ជាក់ដោយ IN NATURAL LANGUAGE MODE ដែលប្រើក្នុង AGAINST() ។ គ្រប់ Row និមួយៗក្នុងតារាង MATCH() ទាញយកទិន្នន័យដែលមានតំលៃប្រហាក់ប្រហែល ដោយប្រៀបធៀបទៅនឹង String ដែលត្រូវស្វែងរក ដែលប្រើក្នុង AGAINST() ជាមួយនឹងអត្ថបទ (Text) នៅក្នុង Row ដែលប្រើ MATCH() ។
Syntax សំរាប់ Natural Language Full Text Search
SELECT * FROM table_name WHERE MATCH(column_1, column_2) AGAINST('search terms' IN NATURAL LANGUAGE MODE)
កំណត់ចំណាំ៖ ចំនួនតួអក្សរតិចបំផុត សំរាប់ Full Text Search គឺ ៣តួអក្សរ សំរាប់ innoDB Search Index ហើយ ៤តួអក្សរ សំរាប់ MyISAM Search Index ។ ចំពោះពាក្យសាមញ្ញដែមប្រើច្រើនក្នុង អត្ថបទ ដូចជា ‘in’, ‘as’, ‘the’, ‘for’និងជាច្រើនទៀត មិនត្រូវបានយកមកប្រើ ដើម្បីស្វែងរកនោះទេ។
ឧទាហរណ៍៖ នៅក្នុងតារាង users មាន 5 records
២.១ ស្វែងរកទិន្ន័យដោយសរសេរឃ្លា ‘work as developer in company’ នោះវាយកពាក្យ developer និង company ក្រៅពីហ្នឹង គឺមិនយកមក ដើម្បីស្វែងរកនោះទេ។
SELECT * FROM `user` WHERE MATCH(description) AGAINST('work as developer in company' IN NATURAL LANGUAGE MODE)
លទ្ធផល នឹងបង្ហាញដូចខាងក្រោម៖
២.២ ស្វែងរកទិន្នន័យដោយប្រើ “my job career” វានឹងយកពាក្យ “job” និង “career” ហើយលើកលែងតែពាក្យ “my”
SELECT * FROM `user` WHERE MATCH(description) AGAINST('my job career' IN NATURAL LANGUAGE MODE)
យោងតាម SQL ខាងលើ ការប្រើប្រាស់ MATCH() នៅក្នុង WHERE វានឹងបង្ហាញលទ្ធផលណា ទៅតាមតំលៃប្រហាក់ ប្រហែល គិតជាលេខទសភាគវិជ្ជមាន។ ចំនួនទសភាគដែលធំជាងគេ ត្រូវដាក់ខាងលើ បើមានតំលៃសូន្យ មានន័យថា មិនប្រហាក់ប្រហែលគ្នា ។
ដើម្បីមើលតំលៃប្រហាក់ប្រហែល សាកល្បងដាក់ MATCH() ដូចខាងក្រោម៖
SELECT id, name, phone_number, address, description, MATCH(description) AGAINST('my job career' IN NATURAL LANGUAGE MODE) as relevance_value FROM `users`
តាមលទ្ធផលខាងលើ បង្ហាញថា ចំពោះ Row នៃ id លេខ ១ និងលេខ ៥ មានតំលៃប្រហាក់ប្រហែលស្មើសូន្យ ហើយ Row នៃ id លេខ ៤ មានតំលៃប្រហាក់ប្រហែលខ្ពស់ជាងគេ នឹងត្រូវបង្ហាញលើគេ និងបន្តបន្ទាប់ទៅតាមតំលៃប្រហាក់ប្រហែល។ ចុងក្រោយ នឹងបង្ហាញលទ្ធផលដូចរូប៖
អត្ថបទបន្ទាប់ នឹងបង្ហាញពីការប្រើប្រាស់ MYSQL Query Expansion ។
សូមអរគុណ!