у меня есть таблица в mysql. он содержит ссылки, заголовки, описания и ключевые слова примерно для ста веб-сайтов. Не на каждом сайте есть поле для ключевых слов. Я просканировал Apple.com с помощью написанного мной поискового робота и проиндексировал большинство сайтов Apple.
Я связал таблицу с моей поисковой системой, и у меня возникла проблема. код, который я использовал, не сортируется по релевантности. под этим я подразумеваю, что если пользователь введет «Apple» в поисковую систему, он вернет довольно случайные результаты. если я наберу «купить ipad», вместо Apple Store появится ipad. я хочу, чтобы запрос сканировал все поля, чтобы увидеть, сколько раз каждый пользовательский ввод находится в поле, а затем ранжировать по наиболее релевантным. * если происходит столкновение, побеждает более высокий идентификатор ... в основном.
Кстати, если бы я ввел iphone или ipad, результаты были бы правильными. У меня есть два разных запроса для отдельных и вместе терминов, и я хотел бы также знать, как смешивать их вместе, чтобы получить 1 запрос.
Terms together:
$query = " SELECT * FROM scan WHERE ";
$terms = array_map('mysql_real_escape_string', $terms);
$i = 0;
foreach ($terms as $each) {
if ($i++ !== 0) {
$query .= "AND";
}
$query.= "Match(title, description, keywords, link) Against ('".implode(' ', $terms )." in boolean mode);
}
Terms Seperate
$query = " SELECT * FROM scan WHERE ";
$terms = array_map('mysql_real_escape_string', $terms);
$i = 0;
foreach ($terms as $each) {
if ($i++ !== 0) {
$query .= "or";
}
$query.= "Match(title, description, keywords, link) Against ('".implode(' ', $terms )." in boolean mode);
}