MySQL поиск.Требовать все ключевые слова - PullRequest
0 голосов
/ 15 июля 2011

У меня есть этот sql-запрос:

SELECT DISTINCT url FROM paragraphs WHERE 
  MATCH (title) AGAINST('$query') ORDER BY 
  MATCH (title) AGAINST('$query') DESC

Что происходит, хотя, когда я ищу, например, «Джон Смит», я получаю «Джон» «Джон Чамберс» ... и т.Как я могу сделать оба слова обязательными?

Ответы [ 2 ]

0 голосов
/ 15 июля 2011

Использование + в булевом поиске должно сделать все слова обязательными:

<?php

$query = str_replace(" "," +",$query);

$sql = "SELECT DISTINCT url FROM paragraphs WHERE 
          MATCH (title) AGAINST('$query' IN BOOLEAN MODE))
          ORDER BY score DESC;"

?>

Dev.MySQL.com: 11.9.2.Булевы полнотекстовые поиски

0 голосов
/ 15 июля 2011

Вы можете добавить дополнительное условие LIKE в ваше место, чтобы отфильтровать все нежелательные совпадения:

SELECT DISTINCT url FROM paragraphs WHERE 
  MATCH (title) AGAINST('$query') AND title LIKE "%$query%"
  ORDER BY MATCH (title) AGAINST('$query') DESC

Таким образом, у вас есть результат и только результаты, совпадающие точно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...