Писане на собствена търсачка
Бих искал веднага да кажа, че великите програмни гурута могат веднага да кажат, че в този урок всичко не е наред и че не можете да го направите. Че е необходимо да се проверят всички въведени данни за инжектиране и т.н. Нека избягваме всички тези фрази, ние правим система за търсене, ще трябва да се справите със сигурността поотделно и имаше много уроци по тази тема, така че няма да се фокусираме върху това.
1. Структура.
Първо искам да покажа в коя таблица съхранявам материали:

Както можете да видите, имам много полета, повечето от които не показах са предназначени чисто за технически проблеми. По същество се интересуваме от първите 4 полета: id, заглавие, ключови думи, текст. Ако по някакъв начин съхранявате материалите си по различен начин и например имате друго поле за описание, тогава трябва да вземете предвид тази точка и да направите съответните необходими корекции.
След това ни интересува какви файлове ще имаме в системата:
Тук също няма нищо сложно, самата търсачка е search_core.php и шаблонът search_result.tpl. Какъв е смисълът? Фактът, че всички данни, изпратени от потребителя, ще бъдат обработени в търсачката и ще генерират изход от файла на шаблона до мястото, от което се нуждаем на сайта.
Самият файл search_core.php ще бъде изграден върху функции, работещи с масиви и редовни функции.
2. Характеристики на руския език.
Не е тайна, че руският е може би най-трудният език в света, защото има толкова много словоформи, колкото имаме в един език на който и да е език на света. Защо? Да, защото в нашия език има такива неща като префикси, окончания, суфикси и т.н. Това прави невероятно трудно за чужденците и в частност за нас, програмистите, да учат и да преподават на големите и силните. Ще трябва да научим нашата система поне да разбира различни случаи на думи.
Нека да решим какви окончания имаме за думи и да напишем първата функция в нашето ядро, което ще отреже окончанията от думите на заявката, за да увеличи нивото на релевантност:
Както можете да видите, като цяло, досега нищо сложно. Тези. ако потребителят въведе например думата: "Песни", тогава системата ще изхвърли буквата "и" и ще ни остави само "Песен" и това ще ни позволи да намерим вече такива думи като песен, песен, песни, и т.н. Тези. търсещата семантика се увеличи.
Моля, обърнете внимание, че посочих не всички съществуващи окончания; може да има и повече, тук ще трябва да преподавате системата. Може дори да се наложи леко да преработите нормалната функция и да напишете допълнителни правила.
Същите функции могат да бъдат написани в префикси и суфикси, но засега не се увличайте, в противен случай можем да превърнем думите си в неразбираеми мъничета и тогава системата ще намери всичко, което е поне донякъде подобно на нашето искане, но все още имаме нужда по-точни съвпадения.