Всё будет Кока-Кола.
Итак, хочу поделится текущей проблемой и своим решением (естественно, делюсь желая узнать ваше мнение).
Сабж:
Требуется реализовать поиск по продукции поискового портала, соответсвенно отбирать товары нужно релевантности. Для подобных целей я реальзовал текущую систему:
1) Запрос разбивается по словам.
2) Удаляются предлоги и другие "лишние слова"
3) Обрезаются окончания
4) Идет сравнения списка слов с наименованием продукта
Реализация:
- Обрезание окончаний
- Генерация списка слов
- Собственно определение релевантности
Однако во всем жтом счастье есть одно "НО", как вы видите значение $ADDED приравнивается нулю, я долго пытался замутить в него какой нибудь простенький алгоритм сравнивания длинн, но неудача постигла меня. =) Мне не нравилась его работа.
Брэйнсторм:
Требуется немного модернизировать функцию relevant, что бы на её значение влияла так же длина запроса и $TEXT_LENTGH.
Иными словами релевантность запроса "паркет" по отношению к "паркетная доска" и "паркетный лак Тыдым" должны быть разными. =)
P.S. Пробовал заменять на $RESULT=ROUND(100*$RESULT/$TEXT_LENGTH+$ADDED); - не понравилось.
P.P.S. Про то, что я не вырезаю знаки препинания посьба не говорить - я их вырезаю.
Сабж:
Требуется реализовать поиск по продукции поискового портала, соответсвенно отбирать товары нужно релевантности. Для подобных целей я реальзовал текущую систему:
1) Запрос разбивается по словам.
2) Удаляются предлоги и другие "лишние слова"
3) Обрезаются окончания
4) Идет сравнения списка слов с наименованием продукта
Реализация:
- Обрезание окончаний
- Генерация списка слов
- Собственно определение релевантности
Однако во всем жтом счастье есть одно "НО", как вы видите значение $ADDED приравнивается нулю, я долго пытался замутить в него какой нибудь простенький алгоритм сравнивания длинн, но неудача постигла меня. =) Мне не нравилась его работа.
Брэйнсторм:
Требуется немного модернизировать функцию relevant, что бы на её значение влияла так же длина запроса и $TEXT_LENTGH.
Иными словами релевантность запроса "паркет" по отношению к "паркетная доска" и "паркетный лак Тыдым" должны быть разными. =)
P.S. Пробовал заменять на $RESULT=ROUND(100*$RESULT/$TEXT_LENGTH+$ADDED); - не понравилось.
P.P.S. Про то, что я не вырезаю знаки препинания посьба не говорить - я их вырезаю.
Возможно, формула релевантность = (число совпавших слов) ^ 2 / (число слов в запросе) * (число слов в наименовании) даст более адекватный результат?
При таком подходе требование релевантность запроса "паркет" по отношению к "паркетная доска" и "паркетный лак Тыдым" должны быть разными, кажется, выполняется.
качать тут:
www.plati.ru/asp/pay.asp?idd=1040991