См. http://en.wikipedia.org/wiki/Quotient_filter. Я еще не нашел ни одной реализации, и я хотел бы с чем-то поиграть, объяснение в Википедии, на мой вкус, немного суховато.
Существует ли реализация частного фильтра с открытым исходным кодом?
comment
Я думаю, тебе следует прочитать статью Бендера. Просто из определения AMQ в Википедии должно быть ясно, что фильтр Блума уже является AMQ, поэтому выберите любую реализацию фильтра Блума.
- person hroptatyr   schedule 31.08.2012
comment
И фильтры Блума, и частные фильтры являются примерами AMQ (приблизительный запрос на членство), но они используют разные структуры данных для своей реализации. Оба подходят для основной памяти, но, согласно статье, частные фильтры больше подходят для флэш-накопителей.
- person Stefan L   schedule 09.10.2012
Ответы (2)
Я реализовал факторный фильтр на C (ссылка). Он поддерживает следующие операции;
- Вставить (qf, ключ)
- May-Contain(qf, ключ)
- Remove(qf, key) (с оговоркой, см. документацию в qf.h)
- Слияние (qf1, qf2) -> qfout
- Итерация (qf)
Репозиторий содержит некоторую документацию и довольно строгий набор тестов.
person
vedantk
schedule
02.09.2014
Я реализовал один на PHP, чтобы поиграть с ним. Он не завершен, но добавление/содержит реализовано. Это не защита от дурака и даже не защита от ошибок.
https://github.com/dsx724/php-quotient-filter
Надеюсь это поможет.
person
dsx724
schedule
27.11.2013
Какую ссылку (бумагу?) вы использовали для этой реализации?
- person Janus Troelsen; 01.12.2013
Это не бумага Бендера с 3-битным отпечатком пальца. Я разделил отпечаток пальца и остаток на две разные структуры данных для простоты, но по сути это одно и то же. Я не сортировал остатки, как указано в бумаге.
- person dsx724; 17.12.2013