Вне ядра основных правил
Существуют ли реализации систем правил производства, которые работают вне ядра?
Я проверил реализации с открытым исходным кодом, такие как CLIPS и Jess, но они работают только в памяти, поэтому они имеют тенденцию к краху или принудительной замене диска при работе с большим количеством фактов и правил (например, в миллиардах / триллионах).
Я играю с идеей о возможности переноса простого механизма правил, такого как Pychinko, в бэкэнд SQL, используя ORM Джанго. Однако поддержка уровня функциональности, найденного в CLIPS, была бы очень нетривиальной, и я не хочу изобретать велосипед.
Есть ли альтернативы для расширения системы правил производства?
2 ответа
Вы можете проверить JENA и аналогичные механизмы правил RDF, которые предназначены для работы с очень большими базами данных фактов.
Это не прямой ответ на ваш вопрос, но он может дать вам линию атаки на проблему.
Еще в 80-х и 90-х годах мы разработали информационно-поисковую систему, которая учитывала очень большое количество постоянных запросов. В частности, у нас были системы с 64 МБ памяти (что в то время было огромной нагрузкой), которые принимали более миллиона сообщений в день и применяли от 10000 до 10000+ постоянных запросов к этому потоку.
Если бы все, что мы сделали, это итеративно применили каждый постоянный запрос к самым последним документам, мы были бы мертвым мясом. То, что мы сделали, - это осуществили своего рода инверсию запросов, конкретно указав обязательные и возможные термины в запросе. Затем мы использовали термин список из документа, чтобы найти те запросы, которые имели какой-либо шанс на успех. Клиент научился создавать запросы, которые имели сильные отличия, и в результате иногда требовалось полностью оценить только 10 или 20 запросов.
Я не знаю ваш набор данных, и я не знаю, как выглядят ваши правила, но вы можете попробовать нечто подобное.