การจัดเก็บนิพจน์ทั่วไปในตารางฐานข้อมูล MySQL และจัดการกับนิพจน์เหล่านั้น

ฉันมีงานที่น่าสนใจมาก ซึ่งฉันไม่รู้วิธีปฏิบัติ

ฉันต้องจัดเก็บนิพจน์ทั่วไปจำนวนมากไว้ในตารางฐานข้อมูล และต้องสามารถค้นหาได้ว่านิพจน์ใดตรงกับสตริงที่กำหนด

ตัวอย่างเช่น:

id | regexp
---|-------------
1  | ^hello world$
2  | ^I have [0-9] flowers&
3  | ^some other regexp$ 
4  | ^and another (one|regexp)$

และฉันต้องค้นหาว่าสำนวนใดตรงกับสตริง "ฉันมีดอกไม้ 5 ดอก" แน่นอนว่าฉันสามารถ SELECT * FROM table และวนซ้ำนิพจน์ที่จับคู่พวกมันทีละรายการใน PHP ได้ แต่นี่อาจเป็นเรื่องที่แย่มากสำหรับเซิร์ฟเวอร์ที่จะจัดการ

ฉันสามารถจัดทำดัชนีตารางนี้หรือใช้แบบสอบถาม SQL พิเศษเพื่อจัดการงานนี้ได้หรือไม่

ฉันจะขอบคุณคำตอบใด ๆ ขอบคุณ


person Silver Light    schedule 01.03.2010    source แหล่งที่มา


คำตอบ (2)


select * from table where $your_string RLIKE regexp 

นิพจน์ทั่วไปของ mysql

person user187291    schedule 01.03.2010
comment
ขอบคุณ ฉันเคยใช้ RLIKE มาก่อน แต่ไม่คิดว่าจะเปลี่ยนข้อโต้แย้ง :) - person Silver Light; 01.03.2010
comment
ฉันควรใช้ดัชนีประเภทใดเพื่อให้เหมาะกับสถานการณ์นี้มากที่สุด เพียงจัดทำดัชนีคอลัมน์ regexp? - person Silver Light; 01.03.2010

SELECT * FROM table WHERE 'some stuff' REGEXP `regexp`;

น่าเสียดายที่ไม่มีวิธีใช้ดัชนีกับข้อความค้นหาที่ใช้ regexps

person Romuald Brunet    schedule 04.03.2010