Как извлечь соответствующую фразу из данных в MYSQL / PHP? - PullRequest
0 голосов
/ 28 апреля 2009

Я пытаюсь реализовать функцию поиска на моем сайте. У меня есть следующий тип данных.

Title                Descr  
-----                ----- 
World News           World news, news from across the world, all world news events covered
World Sports         World sports news, for all of sports people, sports is a famous world

Теперь я хочу, чтобы пользователь искал "мировые новости", тогда результат будет отображаться следующим образом:

World News (title)
... all world news events covered ... (descr)

В основном я хочу отображать некоторые фразы в произвольном порядке. Например, когда пользователь ищет «мировые новости», иногда он получает результат, как выше, а иногда как ниже,

World News (title)
World news, news from across the world, ... (descr)

Скажите, пожалуйста, как мы можем получить такую ​​функциональность, используя запросы mysql, или если это невозможно напрямую через запросы mysql, то как это возможно с помощью PHP.

Google иногда делает то же самое, Google отображает фразы из середины, а иногда и начальный текст.

Спасибо.

Ответы [ 3 ]

1 голос
/ 08 мая 2009

Не уверен, есть ли метод MySQL для достижения того, что вы ищете. Я бы вытащил поле из базы данных, а затем использовал PHP функцию explode () для рандомизации фразы:

$desc_field_result = "World news, news from across the world, all world news events covered"; // The "Desc" field from your MySQL Query

$desc_field_array = explode(",",$desc_field_result);

$selected_desc = $desc_field_array[rand(0,sizeof($desc_field_array)-1)];

echo $selected_desc;
0 голосов
/ 08 мая 2009

Google не просто возвращает случайное предложение. Он возвращает фрагмент (или два), который содержит слова, которые вы искали. MySQL не может сделать это для вас. Вам нужно будет сделать это вручную в PHP (вручную найти ключевые слова в возвращенной строке базы данных и отобразить соответствующий фрагмент) или использовать поисковую систему, которая может сделать это за вас (например, Xapian, Sphinx или Apache Lucene).

0 голосов
/ 28 апреля 2009

Если у вас есть названия и описание, хранящиеся в вашей таблице MySQL, попробуйте что-то вроде этого:

SELECT descr FROM yourTable WHERE title='World News' ORDER BY RAND()

Условие ORDER BY RAND() будет случайным образом выбираться из одной из строк, где условие заголовка World news соответствует

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