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

lunux

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

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

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

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

дан запрос:

"кошки"

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

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

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

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

т.е. как в реальных поисковиках.
 

SiMM

Новичок
Почему бы не переложить это на сторону SQL-клиента, которым чаще всего является серверный язык программирования?
 

lunux

Новичок
Так всё и лежит на MySQL и выборка идёт из БД.
Вопрос в другом:
"Можно ли средствами релевантного поиска по БД MySQL из результатов, как то выдёргивать куски текста, где наиболее часто встречаются введённые ключевые слова?"
я незнаю как ещё полее чётче сформулировать.
 

Cougar

Кошак
lunux
Теоретически - можно. Практически - смотри, что SiMM сказал.
 

SiMM

Новичок
lunux, мне почему-то кажется, что из нас двоих я понял сказанное с первого раза. Даю подсказку - SQL-клиент и SQL-сервер - разные вещи, и я тебе предложил решать часть своей задачи средствами клиента, а не сервера, поскольку это намного проще.
 

lunux

Новичок
а-а-а, углубте ещё ваш намёк, как именно это можно сделать ... очень, очень, очень, буду благодарен.
 

Фанат

oncle terrible
Команда форума
lunux
он предлагает тебе запросом доставать весь текст, а а потом, с помощью пхп реализовывать нужный тебе алгоритм.

при этом я не понимаю, какой смысл в полнотекстовом поиске по одному единственному слову с одной стороны, и каков алгоритм вырезания если будет слов больше - с другой стороны.
 

fisher

накатила суть
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 только выдает исходный массив. подсветка реализуется только средствами скриптового языка. почти тривиально за одним исключением. придется учесть, что текст может быть длинный - и надо "вырезать" нужный более короткий кусок, либо вокруг первого попавшегося подошедшего слова, либо действительно содержащий "максимальную плотность" подошедших слов.
 

lunux

Новичок
ну так в ентом и весь трабл не хочется в результат выборки вытаскивать целые тексты т.к. это статьи и немаленькие.
 

Фанат

oncle terrible
Команда форума
линукс, мне кажется, что в механизме релевантного поиска муэскуэль такой механизм не заложен.
Ты на этот вопрос хотел получить ответ?
Вопросов больше нет?
 

lunux

Новичок
я только хотел уточнить ты ж сам сказал что так тебе кажется, в общем придутся работать по схем SQL-клиента, интересно а как можно вычислить кусок с наиболее высокой частотой ключевых слов, или что можно предложить?
 

Yurik

/dev/null
lunux уточни что надо. Выдергивать запись из таблицы где слово наиболее часто встречается (ORDER BY relevance) или выдергивать часть текста из записи вокруг искомого слова
(Строковые функции, PCRE)
 

lunux

Новичок
я незнаю как уже точней, мне нужно именно второе, но через SELECT как известноя язык запросов SQL богат всякими функциями, но я не на столько продвинут в нём и во мне теплилась надежда что кто то сможет мне помочь из местных Гуру.

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