Писане на собствена търсачка

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

1. Структура.

Първо искам да покажа в коя таблица съхранявам материали:

можете видите

Както можете да видите, имам много полета, повечето от които не показах са предназначени чисто за технически проблеми. По същество се интересуваме от първите 4 полета: id, заглавие, ключови думи, текст. Ако по някакъв начин съхранявате материалите си по различен начин и например имате друго поле за описание, тогава трябва да вземете предвид тази точка и да направите съответните необходими корекции.

След това ни интересува какви файлове ще имаме в системата:

Тук също няма нищо сложно, самата търсачка е search_core.php и шаблонът search_result.tpl. Какъв е смисълът? Фактът, че всички данни, изпратени от потребителя, ще бъдат обработени в търсачката и ще генерират изход от файла на шаблона до мястото, от което се нуждаем на сайта.

Самият файл search_core.php ще бъде изграден върху функции, работещи с масиви и редовни функции.

2. Характеристики на руския език.

Не е тайна, че руският е може би най-трудният език в света, защото има толкова много словоформи, колкото имаме в един език на който и да е език на света. Защо? Да, защото в нашия език има такива неща като префикси, окончания, суфикси и т.н. Това прави невероятно трудно за чужденците и в частност за нас, програмистите, да учат и да преподават на големите и силните. Ще трябва да научим нашата система поне да разбира различни случаи на думи.

Нека да решим какви окончания имаме за думи и да напишем първата функция в нашето ядро, което ще отреже окончанията от думите на заявката, за да увеличи нивото на релевантност:

Както можете да видите, като цяло, досега нищо сложно. Тези. ако потребителят въведе например думата: "Песни", тогава системата ще изхвърли буквата "и" и ще ни остави само "Песен" и това ще ни позволи да намерим вече такива думи като песен, песен, песни, и т.н. Тези. търсещата семантика се увеличи.

Моля, обърнете внимание, че посочих не всички съществуващи окончания; може да има и повече, тук ще трябва да преподавате системата. Може дори да се наложи леко да преработите нормалната функция и да напишете допълнителни правила.

Същите функции могат да бъдат написани в префикси и суфикси, но засега не се увличайте, в противен случай можем да превърнем думите си в неразбираеми мъничета и тогава системата ще намери всичко, което е поне донякъде подобно на нашето искане, но все още имаме нужда по-точни съвпадения.