> Написано ли об этом что-нибудь конкретно в документации?
Вообще зависит от деталей задачи - насколько динамично меняются права, как конкретно организована система прав, насколько большие FT result set итп.
Для начала см. про атрибуты и фильтрацию http://sphinxsearch.com/doc.html#api-fun… - для несложных случаев этого может хватить - скажем сохраняем какую-нибудь группу документов в атрибут и передаем набор доступных пользователю групп фильтром.
Отчего же? Переубедить меня легко - только надо сначала правильно понять, а затем убедительно продемонстрировать неправоту! :)
> но бенчмарк нужен не для моих или ваших пользователей, ... он нужен для пользователей, которые сомневаются и хотят обосновано выбрать
Так точно. Именно поэтому нет смысла бенчмаркать махонькие базы.
На мелких объемах (см. 100K записей, 10M данных) - плевать на бенчмарки! Важна будет только функциональность. Потому что *любая* система покажет приемлемую скорость. Тем самым 95% плевать, за 1 ms или 100 ms будет работать поиск по 100K rows, если он работает как надо.
Бенчмарки нужны - когда начинаются вопросы по скорости, а они начинаются - когда данных много.
Поэтому мне интересно бенчмаркать 10 гигабайт, но совсем неинтересно 10 мегабайт.
> вы на порядок уменьшили result set — это нечестно.
Блин, я тупо обсчитался. Непривычная нотация эти ваши 10^5, показалось, что 60K результатов, а не 600K. Вот пожалуйста -
Z:\work\sphinx\rel098>bin\release\search -i lj -b the -s published,desc
...
index 'lj': query 'the ': returned 1000 matches of 629132 total in 0.111 sec
Z:\work\sphinx\rel098>bin\release\search -i lj -b the -s published,desc
Sphinx 0.9.8-release (r1371)
...
index 'lj': query 'the ': returned 1000 matches of 58129 total in 0.023 sec
Английская годится вполне.
Только надо бы всю wiki разметку грохнуть, а это долгий и нудный препроцесс.
В общем, первый этап, это сделать SQL дамп с вики без разметки.
Я пытался когда-то, но почему-то не доделал.
И, кстати, может ужо заведем список рассылки и туда?
В комментариях на хабре, мнэээ, не самое удобное место для общения.
(Ненавижу, censored, деревянную структуру.)
Но пока не нашел ни описания, как оно работает - ни кода, который таскал бы по сети именно результаты поиска, а не сами списки документов и позиций. Надо копать глубже..
> а вообще я не говорю что Сфинкс плохой, ему есть еще куда расти;)
Я процитирую дословно:
"Xapian (xapian.org) умеет и всё то что умеет sphinx и еще много всего"
Это категорически неправда.
Есть штуки, которые умеет Sphinx, но не умеет Xapian.
И наоборот, есть штуки, которые умеет Xapian, и не умеет Sphinx.
> Там же и с бенчмарками можно разобраться. С вами было бы интересно лично побеседовать.
Не в Москве, но регулярно бываю проездами.
Пишите почту, придумаем что-нибудь.
> Ну а лист сравнения фич я бы все-таки сделал,
Я разве возражаю? :)
Давайте попробуем сделать.
Авось, сумеем перейти от намекающих неправильное формулировов "а вот в XXX все хорошо с YYY" к конкретным словам "с фичой YYY в проекте XXX вот так, в ZZZ вот эдак"
Я не сумел сходу найти в документации. Подскажите, куда копать?
> Удаленное подключение это поиск удаленно, оно данные не передает по которым надо искать)
Опять же, куда копать в документации?
В исходниках (backends/remote) я с наскоку нашел всякие class NetworkTermList/NetworkPostList, сразу стало страшно ;)
> а ранжирование это стандартное ранжирование,
В документации написано про BM25.
Это как раз которое не учитывет позиции слов совсем.
Своя реализация протокола + начинаем уметь SQL
www.sphinxsearch.com/docs/current.html#sphinxql
Многословные (N-to-1 точнее) умеет начиная с 0.9.9-rc1.
sphinxsearch.com/docs/current.html#conf-wordforms
Просто «про поиск» я написать не смогу!
Вообще зависит от деталей задачи - насколько динамично меняются права, как конкретно организована система прав, насколько большие FT result set итп.
Для начала см. про атрибуты и фильтрацию http://sphinxsearch.com/doc.html#api-fun… - для несложных случаев этого может хватить - скажем сохраняем какую-нибудь группу документов в атрибут и передаем набор доступных пользователю групп фильтром.
Отчего же? Переубедить меня легко - только надо сначала правильно понять, а затем убедительно продемонстрировать неправоту! :)
> но бенчмарк нужен не для моих или ваших пользователей, ... он нужен для пользователей, которые сомневаются и хотят обосновано выбрать
Так точно. Именно поэтому нет смысла бенчмаркать махонькие базы.
На мелких объемах (см. 100K записей, 10M данных) - плевать на бенчмарки! Важна будет только функциональность. Потому что *любая* система покажет приемлемую скорость. Тем самым 95% плевать, за 1 ms или 100 ms будет работать поиск по 100K rows, если он работает как надо.
Бенчмарки нужны - когда начинаются вопросы по скорости, а они начинаются - когда данных много.
Поэтому мне интересно бенчмаркать 10 гигабайт, но совсем неинтересно 10 мегабайт.
:)) Эта, у моих пользователей гигабайты в среднем как раз далеко не редкость.
Иначе скорее всего успешно работает что-нибудь другое, и нужды мигрировать на Сфинкс никакой.
Поэтому сильно интереснее бенчмаркать 10 гигабайт, чем 10 мегабайт.
1M в этом - это не особо важно тк. производительность слабо зависит от числа документов в целом.
> все же как-то странно у вас: один и тот же запрос, один и тот же индекс, а матчей разное количество. так разве бывает? :)
Конечно бывает - это тестовый индекс и я его тупо перестраиваю с нужным количеством документов :) Это ж недолго ж совсем.
Блин, я тупо обсчитался. Непривычная нотация эти ваши 10^5, показалось, что 60K результатов, а не 600K. Вот пожалуйста -
Z:\work\sphinx\rel098>bin\release\search -i lj -b the -s published,desc
...
index 'lj': query 'the ': returned 1000 matches of 629132 total in 0.111 sec
Пишите, я подпишу.
Может, давайте уже в почту перейдем? :)
В окошко размером 3 строки откровенно неудобно вбивать сочинения на тему ;)
Sphinx 0.9.8-release (r1371)
...
index 'lj': query 'the ': returned 1000 matches of 58129 total in 0.023 sec
Только надо бы всю wiki разметку грохнуть, а это долгий и нудный препроцесс.
В общем, первый этап, это сделать SQL дамп с вики без разметки.
Я пытался когда-то, но почему-то не доделал.
И, кстати, может ужо заведем список рассылки и туда?
В комментариях на хабре, мнэээ, не самое удобное место для общения.
(Ненавижу, censored, деревянную структуру.)
Ага, вижу секцию про Values, спасибо.
> удаленный доступ - http://xapian.org/docs/remote.html
Это я нашел.
Но пока не нашел ни описания, как оно работает - ни кода, который таскал бы по сети именно результаты поиска, а не сами списки документов и позиций. Надо копать глубже..
> а вообще я не говорю что Сфинкс плохой, ему есть еще куда расти;)
Я процитирую дословно:
"Xapian (xapian.org) умеет и всё то что умеет sphinx и еще много всего"
Это категорически неправда.
Есть штуки, которые умеет Sphinx, но не умеет Xapian.
И наоборот, есть штуки, которые умеет Xapian, и не умеет Sphinx.
Разное они умеют, просто разное.
Не в Москве, но регулярно бываю проездами.
Пишите почту, придумаем что-нибудь.
> Ну а лист сравнения фич я бы все-таки сделал,
Я разве возражаю? :)
Давайте попробуем сделать.
Авось, сумеем перейти от намекающих неправильное формулировов "а вот в XXX все хорошо с YYY" к конкретным словам "с фичой YYY в проекте XXX вот так, в ZZZ вот эдак"
Бенчмаркать, кстати, более интересно не махонькие базы по 200 мег, а что-нибудь что таки не влезает в память целиком.
Я не сумел сходу найти в документации. Подскажите, куда копать?
> Удаленное подключение это поиск удаленно, оно данные не передает по которым надо искать)
Опять же, куда копать в документации?
В исходниках (backends/remote) я с наскоку нашел всякие class NetworkTermList/NetworkPostList, сразу стало страшно ;)
> а ранжирование это стандартное ранжирование,
В документации написано про BM25.
Это как раз которое не учитывет позиции слов совсем.
Атрибуты на стороне FT движка и на стороне общего вида СУБД это две большие разницы, увы. Иначе я бы просто не стал у себя делать атрибуты.
Забенчмаркайте боевой запрос, который возвращает 1M полнотекстовых матчей, с сортировкой по атрибуту. Всё станет наглядно.