ранжирование ключевых слов поисковой машины php - PullRequest
0 голосов
/ 27 января 2012

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

Например, если у меня есть три слова "привет", "привет", "эй" и я хочу искать в таких полях, как тема, сообщение, ссылка, текстовое тело. в этом случае строка с более высоким рейтингом ключевых слов будет на первом месте, а строка с самым низким рейтингом - на последнем. кто-нибудь поможет мне, как реализовать такую ​​поисковую систему. моя база данных составляет около 4 миллионов и быстро растет.

Ответы [ 2 ]

1 голос
/ 27 января 2012

Использовать полнотекстовый поиск:

<?PHP

    //SET THE SEARCH TERM
    $term = "Search Term";


    $sql = "SELECT *, MATCH(subject, message,reference,textbody) AGAINST('". $term ."') as score FROM pages WHERE MATCH (subject, message,reference,textbody) AGAINST('". $term ."') ORDER BY score DESC";
    $query = mysql_query($sql);

    //BUILD A LIST OF THE RESULTS
    while($result = mysql_fetch_assoc($query)) {
       // your stuff for showing result
    }

?>

Примечание: у вас должно быть FULLTEXT индексирование на тему столбцов, сообщение, ссылку, текстовое тело

0 голосов
/ 27 января 2012

Вы можете использовать операторы AND или OR с подобным ключевым словом, в зависимости от того, что вы хотите, чтобы результат поиска.

SELECT * FROM table WHERE subject LIKE %$param1% AND another_col LIKE %$param2% .......;

ИЛИ

SELECT * FROM table WHERE subject LIKE %$param1% OR another_col LIKE %$param2% .......;
...