ស្វែងយល់ពី Full Text Search នៅក្នុង MySQL (វគ្គ២)

ក្នុងអត្ថបទមុន បានបង្ហាញពីកំណត់ កែប្រែ និងលុប FULLTEXT នៅក្នុង Column របស់តារាង (Table) ។ បន្ថែមលើស ពីនេះ នៅក្នុងអត្ថបទនេះដែរ នឹងបង្ហាញលំអិត ចំពោះការប្រើប្រាស់ប្រភេទនៃ Full Text Search និមួយៗ រួមមាន Boolean Full Text Search, Natural Language Search និង Query Expansion

ជាដំបូង ត្រូវយល់ពី Syntax ជាមុនសិន៖

MATCH (column_1, column_2,...) AGAINST (expression[search_modifier])
  • column_1, column_2, … : ជាឈ្មោះរបស់ Column ដែលញែកពីគ្នាដោយក្បៀស (comma) ដែលត្រូវស្វែងរក។
  • AGAINST() : ទទួលយក String ដើម្បីដំណើរការ ស្រាវជ្រាវព័ត៏មាន ។ ម៉្យាងវិញទៀត យើងអាចបន្ថែមនូវ Search Modifier ស្រមទៅតាមប្រភេទនៃ Full Text Search និមួយៗ ដើម្បីឲ្យប្រសិទ្ធភាពនៃការស្រាវជ្រាវ កាន់តែខ្ពស់ ។
  • String ដែលត្រូវ Search ត្រូវតែជា String Value ដែលនឹងត្រូវយកទៅទាញទិន្នន័យ។

១. Boolean Full Text Search

ដើម្បីដំណើរការស្រាវជ្រាវព័ត៏មាន ដែលមានភាពស្មុគស្មាញ MySQL បង្កើតនូវ Boolean Full Text Search ដែលប្រើប្រាស់ Boolean Operator ដោយដាក់ IN BOOLEAN MODE  បន្ថែមនៅក្នុង AGAINST  ក្នុងគោលបំណងបញ្ជាក់អត្ថន័យ ពិសេស នៅខាងចុងនៃ Search String។

SELECT * FROM table_name WHERE MATCH(col1, col2)
AGAINST('search terms' IN BOOLEAN MODE)

ឧទាហរណ៍៖ នៅក្នុងតារាង (Table) users មានទិន្នន័យ ៤ records ដូចខាងក្រោម៖
full_text_search_users_data

១.១ ស្វែងរកទិន្នន័យនៃ address column មាន ពាក្យថា “Phnom” ក្នុង Rows  ដោយប្រើ IN BOOLEAN MODE

SELECT name, address 
FROM `users` 
WHERE MATCH(address) 
      AGAINST('Phnom' IN BOOLEAN MODE)

លទ្ធផល នឹងបង្ហាញ ៤ Records ដូចខាងក្រោម៖

full_text_search_users_data_query1

១.២ ស្វែងរកទិន្នន័យ នៃ address column ដែលមានពាក្យ “Phnom” និង “Khan” ក្នុង Rows ដោយប្រើ Boolean Operator (+)  ។

SELECT name, address 
FROM `users` 
WHERE MATCH(address) 
      AGAINST('+Phnom +Khan' IN BOOLEAN MODE)

លទ្ធផល នឹងបង្ហាញ ៣ Record ដូចរូបខាងក្រោម៖

full_text_search_users_data_query2

១.៣ ស្រាវជ្រាវទិន្នន័យ ដែល address column មានពាក្យ “Phnom Penh” តែមិនមានពាក្យថា “Khan” ក្នុង Rows ដោយប្រើ Boolean Operator (-)

SELECT name, address 
FROM `users` 
WHERE MATCH(address) 
      AGAINST('+Phnom -Khan' IN BOOLEAN MODE)

លទ្ធផល នឹងបង្ហាញតែ ១ Record ដូចខាងក្រោម៖

full_text_search_users_data_query3
១.៤ ស្វែងរកទិន្នន័យនៃ address column ដែលមានឃ្លា “Sangkat Steung Mean Chey” ដោយប្រើ Boolean Operator (“”)

SELECT name, address 
FROM `users` 
WHERE MATCH(address) 
      AGAINST('"Sangkat Steung Mean Chey"' IN BOOLEAN MODE)

លទ្ធផល នឹងបង្ហាញ ២ Records ដូចខាងក្រោម៖

full_text_search_users_data_query4

១.៥ ស្វែងរកទិន្នន័យនៃ address column ដែលមានឃ្លា “Sangkat Steung Mean Chey”  មានពាក្យ Khan និង Phnom ដោយបន្ថែម Boolean Operator () ។

SELECT name, address 
FROM `users` 
WHERE MATCH(address) 
      AGAINST('"Sangkat Steung Mean Chey" +(Khan Phnom)' IN BOOLEAN MODE)

លទ្ធផល នឹងបង្ហាញ ៤ Records ដូចខាងក្រោម៖

full_text_search_users_data_query5

១.៦ ស្វែងរកទិន្នន័យនៃ address column ដែលមានពាក្យ ផ្តើមដោយ Kha ដែលអាចជា Khan ឬ Khang ដោយប្រើ Boolean Operator (*)

ELECT name, address 
FROM `users` 
WHERE MATCH(address) 
      AGAINST('Kha*' IN BOOLEAN MODE)

លទ្ធផល នឹងបង្ហាញ ៣ Records ដូចខាងក្រោម៖

full_text_search_users_data_query6