Программирование > Теория, алгоритмы и стандарты
Релеватность и поиск
AlieN:
--- Цитировать ---Greg:
AlieN мне кажется, что тогда нужно искать сначала полное совпадение фразы + позиция в строке, а затем уже слова по отдельности или фраза минус одно слово, минус два слова и т.д. - т.е. сделать переборку
--- Конец цитаты ---
На коде покажи, непонимаю тя.
Greg:
AlieN
как я тебе могу написать когда я ещё сам ниче не понимаю))) сначала нужно логику алгоритма выдумать, а потом уж код, а то телегу поперед лошади получается :)
AlieN:
Близость между словами можно искать опять же на позиции слов.
допустим
... FROM `products_words_in` AS `t1`,``products_words_in` AS `t2`
MIN(`t1`.`rate`-`t2`.`rate`) AS `nearing`
.....
ORDER BY `neadring` ASC
Greg:
AlieN
мне кажется, что CGVictor прав - лучше вытаскивать строки и работать с ними каким-нить языком (я делаю на пхп)
примерно так
1. достаем строку
2. обрабатываем её, создаем для неё показатель релевантности по отношению к строке запроса
3. заносим этот показатель вместе с ид документа (записи в таблице базы) в массив
(после обработки всех строк)
4. сортируем по показателю
5. выводим
единственное, что тут сложное - алгоритм определения релевантности
CGVictor:
Greg AlieN
Вот вам короткий алгоритм:
--- Код: ---$query = "какая-то фигня";
$text1 = "какая-то фигня очень часто попадается в незначащих темах на этом форуме";
$text2 = "спам - ненужная информация, какая-то фигня, чаще всего в почтовых системах";
function get_relevance($query,$text) {
$tmp = substr($text,0,(strpos($text,$query)+strlen($query)));
if($tmp!==false) {
return similar_text($query,$tmp);
} else {
return 0;
}
}
--- Конец кода ---
http://php.rinet.ru/manual/ru/function.similar-text.php
http://php.rinet.ru/manual/ru/function.levenshtein.php
И не напрягайте базу - это не ее задача.
Навигация
Перейти к полной версии