سلام.
در دیتابیسی مثل SQlite که امکان FTS داره، امکانات مختلفی برای جستجوی ترکیبی وجود داره مثل وجود یک کلمه، عدم وجود یک کلمه، وجود یک عبارت، فاصله بین دو کلمه و ... .

حالا مساله اینه که اگه بخوایم این امکانات رو بصورت یک سری قوانین جستجو با استفاده از علائم در برنامه ارائه بدیم، برای تحلیل متن مورد جستجو بهترین الگوریتم چیه؟ مثلا فرض کنید که قوانین رو اینطور قرار بدیم: علامت + برای وجود کلمه، علامت - برای عدم وجود کلمه، علامت "" برای جستجوی عبارت و ... .

حالا مثلا کاربر این عبارت رو برای جستجو وارد کرده:
+محمد +علی -حسن +"فوتبال تماشا کردند"

این یعنی جستجو باید شامل رکوردهایی باشه که در اون فیلد متنی ما، هم کلمه محمد باشه، هم کلمه علی باشه، هم عبارت «فوتبال تماشا کردند» باشه و همچنین شامل کلمه حسن نباشه.

سوال اینه که اساسا چه الگوریتمها و روشهایی برای تحلیل متن وارد شده وجود داره و بهترین اونها کدومه؟