Результат при релевантном поиске

  • Автор темы Автор темы lunux
  • Дата начала Дата начала

lunux

Новичок
Результат при релевантном поиске

Можно ли средствами релевантного поиска по БД MySQL из результатов, как то выдёргивать куски текста, где наиболее часто встречаются введённые ключевые слова?

т.е. скажем у нас есть большо кусок текста, утрируя:

"Здравствуйте детишки, поиграем в кошки мышки"

дан запрос:

"кошки"

нужно путём выборки типа:

SELECT text FROM table WHERE MATCH(data) AGAINST('кошки')

получить в поле text только:

"поиграем в кошки мышки"

т.е. как в реальных поисковиках.
 
Почему бы не переложить это на сторону SQL-клиента, которым чаще всего является серверный язык программирования?
 
Так всё и лежит на MySQL и выборка идёт из БД.
Вопрос в другом:
"Можно ли средствами релевантного поиска по БД MySQL из результатов, как то выдёргивать куски текста, где наиболее часто встречаются введённые ключевые слова?"
я незнаю как ещё полее чётче сформулировать.
 
lunux
Теоретически - можно. Практически - смотри, что SiMM сказал.
 
lunux, мне почему-то кажется, что из нас двоих я понял сказанное с первого раза. Даю подсказку - SQL-клиент и SQL-сервер - разные вещи, и я тебе предложил решать часть своей задачи средствами клиента, а не сервера, поскольку это намного проще.
 
а-а-а, углубте ещё ваш намёк, как именно это можно сделать ... очень, очень, очень, буду благодарен.
 
lunux
он предлагает тебе запросом доставать весь текст, а а потом, с помощью пхп реализовывать нужный тебе алгоритм.

при этом я не понимаю, какой смысл в полнотекстовом поиске по одному единственному слову с одной стороны, и каков алгоритм вырезания если будет слов больше - с другой стороны.
 
lunux:
если разжевать данный тебе совет, то обычно разделяют на
$results = $dbh->get("SELECT text FROM table WHERE MATCH(data) AGAINST('кошки')");
и
foreach ($results as $r) {
$r->text = $highlighter->get_high($r->text,array('кошки'))
}
mysql только выдает исходный массив. подсветка реализуется только средствами скриптового языка. почти тривиально за одним исключением. придется учесть, что текст может быть длинный - и надо "вырезать" нужный более короткий кусок, либо вокруг первого попавшегося подошедшего слова, либо действительно содержащий "максимальную плотность" подошедших слов.
 
ну так в ентом и весь трабл не хочется в результат выборки вытаскивать целые тексты т.к. это статьи и немаленькие.
 
линукс, мне кажется, что в механизме релевантного поиска муэскуэль такой механизм не заложен.
Ты на этот вопрос хотел получить ответ?
Вопросов больше нет?
 
я только хотел уточнить ты ж сам сказал что так тебе кажется, в общем придутся работать по схем SQL-клиента, интересно а как можно вычислить кусок с наиболее высокой частотой ключевых слов, или что можно предложить?
 
lunux уточни что надо. Выдергивать запись из таблицы где слово наиболее часто встречается (ORDER BY relevance) или выдергивать часть текста из записи вокруг искомого слова
(Строковые функции, PCRE)
 
я незнаю как уже точней, мне нужно именно второе, но через SELECT как известноя язык запросов SQL богат всякими функциями, но я не на столько продвинут в нём и во мне теплилась надежда что кто то сможет мне помочь из местных Гуру.

В конце концов совершенства нет :) и с этим стоит смериться, но всеравно всем спасибо, кто откликнулся - будем искать.
 
Сверху