Всё будет Кока-Кола.
Итак, хочу поделится текущей проблемой и своим решением (естественно, делюсь желая узнать ваше мнение).

Сабж:

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

1) Запрос разбивается по словам.
2) Удаляются предлоги и другие "лишние слова"
3) Обрезаются окончания
4) Идет сравнения списка слов с наименованием продукта

Реализация:
- Обрезание окончаний

- Генерация списка слов

- Собственно определение релевантности

Однако во всем жтом счастье есть одно "НО", как вы видите значение $ADDED приравнивается нулю, я долго пытался замутить в него какой нибудь простенький алгоритм сравнивания длинн, но неудача постигла меня. =) Мне не нравилась его работа.

Брэйнсторм:
Требуется немного модернизировать функцию relevant, что бы на её значение влияла так же длина запроса и $TEXT_LENTGH.

Иными словами релевантность запроса "паркет" по отношению к "паркетная доска" и "паркетный лак Тыдым" должны быть разными. =)

P.S. Пробовал заменять на $RESULT=ROUND(100*$RESULT/$TEXT_LENGTH+$ADDED); - не понравилось.
P.P.S. Про то, что я не вырезаю знаки препинания посьба не говорить - я их вырезаю.

@темы: Алгоритмы, PHP, Вопросы

Комментарии
09.07.2008 в 16:25

Всё будет Кока-Кола.
Хотя на самом деле $RESULT=ROUND(100*$RESULT/$TEXT_LENGTH+$ADDED); дает более адекватный результат, но вот если строка поиска длинее наименования то результат уже не адукватен. =) А приравнивать $TEXT_LENGTH+=$SUMM жестко.
09.07.2008 в 17:07

 
Мм... а почему, по твоему мнению, релевантность должна учитывать именно длину?
Возможно, формула релевантность = (число совпавших слов) ^ 2 / (число слов в запросе) * (число слов в наименовании) даст более адекватный результат?
При таком подходе требование релевантность запроса "паркет" по отношению к "паркетная доска" и "паркетный лак Тыдым" должны быть разными, кажется, выполняется.
09.07.2008 в 17:12

Всё будет Кока-Кола.
La personne mystique раньше я тоже считал по словам, но в результате получил, что "паркет" и "дуб" выдают абсолютно разные результаты, а не должны. Хотя вариант интересен, нужно поразмышлять.
18.07.2008 в 18:03

а не проще ли не изобретать велосипед, а воспользоваться гугловым?
20.07.2008 в 12:44

Всё будет Кока-Кола.
Гость а не проще ли почитать задачу и понять что я ищу по внутренним базам закрытым для внешних поисковиков? Не катит. :)
10.11.2010 в 14:11

Простой пример Ajax для чайников, по нажатию на кнопку-картинку данные из html-страницы записываются в базу и сразу же выводятся на экран без перезагрузки страницы в виде таблицы. Маленький понятный код, в PHP используется метод $_POST, SQL запросы, функция createXMLHttp(), и немного стилей, все только нужное для понимания ajax, исчерпывающие комментарии в строках. Научитесь создавать динамические web-страницы без лишних громоздких библиотек своими руками. Работа со связкой PHP,MySQL,Apache, Javasсript становится легка и понятна каждому. Поняв суть данного примера вы в дальнейшем сможете создавать Ajax-страницы любой сложности. По этой программе можно научиться PHP MySQL и AJAX одновременно.

качать тут:
www.plati.ru/asp/pay.asp?idd=1040991

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail