Умный поиск для вашего сайта

Лого ве6-студии noviKEY

статья опубликована

inc/images/mind_search.jpg
Умный поиск для вашего сайта
Пример коррекции вводимого слова в окно поиска

Поисковые системы приучили пользователей интернета к умному поиску, когда независимо от того что и на каком языке вводится в поисковую форму, выдается нужный результат. Что же делать, если вы решили организовать систему поиска на своём сайте?

У вас есть два три варианта:

  • Интегрировать модуль поиска от Яндекс или Google на свой сайт и в ус не дуть.
  • Придумать свой умный поиск и обучить его тому, что необходимо именно вам.

Для второго случая, как правило, поисковой системе достаточно уметь менять раскладку клавиатуры и переписывать запрос на кирилице в латиницу и наоборот. Здесь можно обойтись примитивной замены по словарю.

Возникает резонный вопрос: Как определить, когда нужно менять раскладку? Как определить, что пользователь вводит несуществующее слово?

Один из способов заключается в использовании очередной библиотеки. В данном случае нужно отслеживать ввод несуществующих в текущем языке буквосочетаний. Однако, данный способ не является стопроцентным так как в каждом языке есть исключения.



function rus2lat($str)
{
    $tr = array(
        "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"e",
        "ж"=>"j","з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l","м"=>"m","н"=>"n","о"=>"o","п"=>"p",
        "р"=>"r","с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h","ц"=>"ts","ч"=>"ch","ш"=>"sh",
        "щ"=>"sch","ъ"=>"y","ы"=>"i","ь"=>"j","э"=>"e","ю"=>"yu","я"=>"ya"," "=> " ",
        "."=> "","/"=> " ",","=>" ","-"=>" ","("=>" ",")"=>" ","["=>"","]"=>"","="=>"","+"=>"",
        "*"=>"","?"=>"","\""=>"","'"=>"","&"=>"","%"=>"","#"=>"","@"=>"","!"=>"",";"=>"",
        "№"=>"","^"=>"",":"=>"","~"=>"","\\"=>""
        );
    return strtr(strtolower($str),$tr);
}

 
function CorrectKeyBoard ($str) 
{
    $tr = array(
        "й" => "q", "ц" => "w" ,"у" => "e" ,"к" => "r" ,"е" => "t" ,"н" => "y" ,"г" => "u" ,"ш" => "i"
        ,"щ" => "o" ,"з" => "p" ,"х" => "[" ,"ъ" => "]" ,"ф" => "a" ,"ы" => "s" ,"в" => "d" ,"а" => "f"
        ,"п" => "g" ,"р" => "h" ,"о" => "j" ,"л" => "k" ,"д" => "l" ,"ж" => ";" ,"э" => "'" ,"я" => "z"
        ,"ч" => "x" ,"с" => "c" ,"м" => "v" ,"и" => "b" ,"т" => "n" ,"ь" => "m" ,"б" => "," ,"ю" => "."
    );
    return strtr(strtolower($str),$tr);
}