![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
theworldcreator |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: 10 Всего: 13 |
Название как то запутанно написал...
Суть вопроса вот в чем: какой на ваш взгляд лучшей способ определения релевантности строки/куска текста для поисковых результатов. Сейчас использую такую систему(мною рассматриваются несколько алгоритмов поиска для разных типов данных. В примере таблица состоящая из id, имени, описания и еще кое какой информации о файлах. Ну проги там всякие) Поисковая строка разбивается на два массива - слова, и те же слова, но с отрезанными окончаниями. Затем ведется несколько отдельных поисков: первый, это нахождение хотя бы одного/всех(зависит от логики - OR AND)слов из поисковой строки в имени файла. Затем результаты сортируются присвоением чего то вроде степени релевантность(сумма кол-ва вхождений каждого слова в данную строку). Второй все тоже самое, только для описания файла. Третий и четвертый такие же как первые два, только для слов без окончаний. Затем сортированные результаты выводятся в соответствие с названием - массив с результатами первого поиска вначале, потом второго и т.д. Результаты без окончаний оказываются в самом конце, потому что отрезание окончаний у меня не совершенное, и программа может ошибаться... Знаю объяснил ужасно, по этому покажу на примере:
Ну и вывод результатов Жду ваших мнений. Это сообщение отредактировал(а) theworldcreator - 22.9.2007, 21:53 |
|||
|
||||
-=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 32 Всего: 69 |
theworldcreator, а зачем так делать? Не проще ли использовать FULLTEXT поиск с включенным логическим режимом?
-------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
theworldcreator |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: 10 Всего: 13 |
А русский потянет? Ну там замена окончаний... И кто не будь знает, какой способ определения релевантности использовался в FULLTEXT
Добавлено @ 06:31 Блин. Извините, название темы с ошибкой написал. А как исправить не знаю.. Это сообщение отредактировал(а) theworldcreator - 20.9.2007, 13:51 |
|||
|
||||
Всемогущий |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 25.6.2006 Где: Челябинск Репутация: 5 Всего: 13 |
http://www.mysql.ru/docs/man/Fulltext_Search.html
Добавлено через 1 минуту и 33 секунды MATCH (title,body) возвращает значение релевантности |
|||
|
||||
theworldcreator |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: 10 Всего: 13 |
Спасибо. Попробую. Думаю если FULLTEXT не будет отрезать окончания у русских слов, воспользоваиться моей функцией, а потом добавлять в конце слова без окончания '*'. Может быть даже подберу какой нибудь коэффициент, на который релевантность умножается(меньше одного, разумеется) при поиске без окончаний. А потом все в один массив, и сортировка внутренними функциями php. Или все в один запрос, а перед словами без окончаний еще знак <. Вообщем буду эксперементировать.
Еще раз спасибо. |
|||
|
||||
-=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 32 Всего: 69 |
С русскими у FULLTEXT-а все в порядке, если кодировка базы правильная и COLLATION на полях.
-------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
theworldcreator |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: 10 Всего: 13 |
MySql выдает ошибку - #1214 - The used table type doesn't support FULLTEXT indexes
Поискал в инете, везде говорят используйте MyISAM. Вопрос - как его использовать, и в чем его отличия от InnoDB? P.S. Умные слова InnoDB и MyISAM узнал впервые после поиска по этой ошибке, сегодня. До этого даже не знал что в MySql можно разные типы баз ставить. До сих пор ничего про них толком не знаю, так что буду признателен за информацию/ссылку на нее. Добавлено через 1 минуту и 35 секунд И еще, какая кодировка правильная? Unicode? Извините за дуратские вопросы |
|||
|
||||
-=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 32 Всего: 69 |
FULLTEXT индекс держит только MyISAM насколько я помню.
Есть некоторые различия в поддержке индексов и транзакций. Если важна скорость на выборку, тогда MyISAM, если на вставку и обновления тогда InnoDB. http://dev.mysql.com Все кодировки правильные, если с ними правильно работать. -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
theworldcreator |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: 10 Всего: 13 |
В таблицу с информацией по файлам данные буду заносить я лично, поэтому отсутствие транзакций по идеи не смертельно.
А что значит работать с кодировками правильно? P.S. За информацию большое спасибо. Это сообщение отредактировал(а) theworldcreator - 23.9.2007, 11:28 |
|||
|
||||
-=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 32 Всего: 69 |
Создавать базу в нужной тебе кодировке, незабывать выставлять правильные COLLATION-ы на поля ну и все такое. -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
theworldcreator |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: 10 Всего: 13 |
А как узнать, какая мне нужна кодировка?
Как мне сказали, COLLATION - это способность бд задавать разные кодировки, разным столбцам одной таблицы. Здесь нужны какие-то разные кодировки? |
|||
|
||||
theworldcreator |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: 10 Всего: 13 |
Я тут поискал по форуму. Че то все советуют для сайтов php использовать свои алгоритмы, основные на LIKE. И доводы приводят весьма убедительные... Так какое мнение большинства - что лучше использовать(и если LIKE, то как? Читай первый пост)?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |