ни разу не общавшись ни с одним из движков, позволю себе предположить, что weight - это ни что иное, как вес документа, т.е. как раз его приоритет в выводе результатов ;)
Не могу не поделиться своим опытом :) Sphinx - это отличный продукт!!! До этого небыло такого простого и быстрого способа индексировать контент (из БД) и предоставлять пользователям сайта такой хороший и быстрый поиск. Он не только быстро ищет, но и быстро индексирует. Умеет фильровать, группировать еще там есть очень классная штука - MVA (можно к каждой записи например в блоге подключить теги и потом сделать выборку всех записей с тегом X).
До этого пользовался mnogosearch, он как раз специализируется на индексировании страниц, как классический поисковик. Нормально работал.
Сфинкс дает гораздо большую гибкость как в индексировании так и в представлении результатов поиска.
Еще его можно использовать не по назначению ) На больших объемах данных он по производительности
превосходит MySQL и его можно использовать как дополнение для быстрых выборок и поиска.
Юзаем в текущем проекте, но подумываем на переход tsearch постгревский(проект на постгресе). Так как реиндексить базу каждый раз как то некошерно. А апдейтить и делетить насколько мне известно сфинкс не умеет(или уж точно не умеет рельсо плагин ultrasphinx). Еще пробовали феррет для наших объемов данных (миллионы записей) - тормоз.
Апдейтить сфинкс умеет только атрибуты. Тексты нет. Решается это дельта-индексом. В основном индексе апдейтим атрибут active=0 а объект добавляем в дельта-индекс.
Насколько же у вас огромна БД что реиндексить БД - проблема?
Без проблем решается переиндексированием один раз в сутки (ночью) + дельта индекс по новым записям+изменениям который индексится за секунды - например по крону каждую минуту.
На семинаре автор рассказывал о 1,5 Тб базе текстов это самое большое по объему и миллион двести запросов в сутки к поиску (хотя вот эту цифру могу спутать).
смею вас успокоить - нет.
хотел прикрутить к проекту приятный поиск, пару дней информацию собирал. в итоге пришёл босс и сказал - фтопку морфологию, етц. делай тупой поиск. на том и порешали :)
youmee, попробуйте поменять Matching mode на SPH_MATCH_PHRASE.
Сталкивался с такой же проблемой, но после шаманства с конфигами и скриптами вроде всё встало на свои места.
Русская морфология работает не хуже английской.
Все таки рекомендую посетить форум на офф.сайте, там и вопрос этот поднимался и автор никогда в помощи не отказывает и объясняет, если что непонятно.
Создайте 2 индекса.
Один для поиска точных соответсвий типа "гитара fender" (в конфиге enable_star = 1),
второй для поиска всех совпадений типа "гитары", "гитарой" ... ;-)
Затем проставте веса для каждого индекса.
Пример для пхп
$cl->SetMatchMode(SPH_MATCH_EXTENDED);
$indexes = array('индекс_с_точным_сооответсвием'=> 10, 'индекс_для_всех_совпадений'=> 1);
$cl->SetIndexWeights($indexes);
$index = implode(', ', array_keys($indexes));
Врезультате все записи с точным соответсвием(Weight будет больше) всплывут наверх.
В мане еще написано _begin, тоже можно попробовать.
Благодарю! Это немного помогло:)
"гитара fender" => в начале гитары,
далее идут всякие фишечки для гитар,
а потом опять гитары (электрогитары), вот у меня вопрос:
помоему он не может брать части слов "электрогитара", к сожалению.. либо берет но не выводит вверх, как бы это сделать...
т.е. я имею ввиду можно как то закрепить слова-синонимы, что бы введя гитара fender, он сначало искал и выводил гитара Fender, потом электрогитара fender и потом примочки для гитар(электрогитар) fender. Было бы просто волшебно! :)
Sphinx??