gpt4 book ai didi

c# - 设计一个灵活高效的问答系统

转载 作者:可可西里 更新时间:2023-11-01 08:12:23 26 4
gpt4 key购买 nike

我一直在研究动态问答系统,但我无法为该系统创建高效且灵活的设计。我很想知道是否有既定的设计模式或设计此系统的任何建议。

我想做什么

我有一组问题。回答完之后,会显示另一组问题,取决于前一组问题的答案。如此重复,直到不需要更多问题。

问题的答案都是 bool 值、多项选择或数字。

重要的部分是,大多数问题仅在满足一组特定标准时才会显示(基于之前的答案)。
我需要主要支持 bool 逻辑的标准,例如 And、Or、Not、Equals、Greater Than 和 Less Than。

例如,假设我已经收到了诸如 Age 等问题的答案, Gender , 和 State .
下一个问题是 In School? , 但只有在以下情况下才会显示:Age < 30 AND Gender=Male AND (State = CA OR State = NY)

有人听说过类似的设计模式吗?您将如何处理此设计?


背景资料

我试过数据库列

起初,我们只有 3 个初始问题,所以我们只使用 3 列来过滤第二组问题。

但是,我们的业务需求增长了,我们开始需要更多初始问题、添加更多列并在这些过滤器中加入更多逻辑。

这很快就变得过于死板和繁琐。

我试过逻辑解释器

我们第二次尝试使系统更加灵活:将过滤逻辑存储为 JavaScript,并运行 JavaScript 解释器来过滤结果。

这在灵 active 方面非常有效,但从数据库中检索数千行并解释脚本效率极低,而且性能太差,不适合生产。

我试过混合动力车

我们最终结合了这两种方法,并提出了一些可行的方法。
我们首先根据几个硬编码的数据库列过滤列表,然后使用 JavaScript 解释器进一步过滤列表。

这个混合系统仍然有很多缺点:

  • 逻辑在 2 个不同的系统中(SQL 数据库逻辑和 JavaScript 解释器)
  • 解释 JavaScript 很慢,对于所需的简单 bool 逻辑来说可能有点矫枉过正
  • 系统很难维护,尤其是因为 JavaScript 逻辑必须始终由开发人员编写。

我真的很想听听有关如何改进此设计的建议。

其他信息

我的数据库是 MS SQL Server,后端是 .NET C#,JavaScript 解释器是 JINT。 UI 实现并不重要,重要的是一个支持 AJAX 的网站,用于提出和回答这些问题。

最佳答案

我们过去不得不为医疗系统做类似的事情,由于它的复杂性,我们求助于重用支持多分类决策树的规则引擎。我记得我遇到了一个很好的简单设计,并设法挖掘出了链接。

http://www.javaworld.com/javaworld/javatips/jw-javatip139.html?page=1

该设计与数据存储松耦合,因此很容易融入您现有的解决方案设计。

关于c# - 设计一个灵活高效的问答系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9247519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com