быстрая загрузка базы знаний слюни - PullRequest
4 голосов
/ 19 ноября 2010

Я пытаюсь использовать Drools в качестве движка правил для грамматических отношений с каркасом семантики. База правил превышает 5000 правил даже сейчас и будет расширена. В настоящее время при использовании Drools чтение файла drl, содержащего правила и создание базы знаний, занимает много времени при каждом запуске программы. Есть ли способ создать базу знаний один раз и сохранить ее в каком-то постоянном формате, который можно быстро загрузить с возможностью восстановления базы знаний только после внесения изменений?

Ответы [ 2 ]

1 голос
/ 30 ноября 2010

Да, drools может сериализовать базу знаний во внешнее хранилище, а затем снова загрузить эту сериализованную базу знаний.

Итак, вам нужен цикл, который загружает из drl, компилирует, сериализует из.Затем второй цикл, который использует сериализованную версию.

Я использовал это с некоторым успехом, сократив время загрузки 1 минута 30 до 15-20 секунд.Кроме того, это также снижает ваши требования к куче / разрешению.

Проверьте API для точных методов.

0 голосов
/ 22 ноября 2010

Моя первая мысль - сохранить базу знаний как можно дольше. Если вы не создаете несколько баз знаний из разных наборов правил, и существует слишком много возможных комбинаций, держитесь за эти базы знаний. В одном приложении, над которым я работаю, одна база знаний имеет все правила, поэтому мы относимся к ней как к одиночке.

Однако, если это невозможно или ваше приложение не так долго работает, я не знаю, что сам Drools предоставляет какие-либо способы ускорить это. Запустив проект Drools 5.0 через отладчик, я вижу, что база знаний Drools дает мне возможность сериализации. Я полагаю, что было бы быстрее десериализовать базу знаний, чем пересмотреть правила. Но будьте осторожны при разработке вашего приложения вокруг этого! Вы используете интерфейсы по причине, и реализация может измениться без предупреждения.

...