В моем запросе я в основном пытаюсь использовать полнотекстовый поиск этой поисковой системы. Когда пользователь вводит элемент, запрос ищет, чтобы определить, совпадают ли какие-либо поля в моей таблице mysql.
Например, скажем, пользователь вводит «iPad». Моя таблица может иметь названия полей ',' description ',' keywords 'и' link ':
Моя таблица может иметь:
Apple, which contains the term iPad once in the description iOS 6, which contains iPad say twice, in the description and title (these are examples) and iPad, which contains the term 'iPad' in the link, description, title and keywords.
Третий результат должен быть первым, а затем ранг 2, а затем id 1.
Но скажу, что я хочу ввести «купить iPad», запрос выполняет то же самое, но проверяет оба слова вместе. Если ни одно название / описание / ссылка / ключевые слова не могут найти их два слова вместе в поле, тогда он найдет самый высокий ранг первого слова, используя метод, показанный выше.
Apple Store -> which contains the terms Buy and iPad in the title field
Если совпадений не найдено, просто определите ранг каждого отдельного слова и определите их.
$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') "; }