存储可以有条件地显示为文本文件一部分的文本块的最佳数据结构是什么?
What is the best data structure to store chunks of a text that can be conditionally shown as part of a text file?
让我们设置场景。这是一个文本文件:
INTRODUCTION
Paragraph 01
Paragraph 02
Paragraph 03
SECTION XXXXXX
Paragraph 01
Paragraph 02
SECTION YYYYYY
Paragraph 01
SECTION ZZZZZZ
Paragraph 01
Paragraph 02
Paragraph 03
每个段落可以包含更多段落,但让我们保持简单。
我们希望通过以下简单规则以编程方式构建文本文件:
- 部分始终存在,至少包含一个段落
- 任何段落都可以根据一个或多个条件显示或不显示。条件被定义为根据上下文评估的代码(例如,考虑 Python 中的
eval
函数)。
- 将在运行时提供上下文
- 段落可以以数字开头。因此,我们不能将数字作为段落的一部分(段落可以存在也可以不存在,并且它们的数字必须遵循正确的顺序:1、2、3 等)
要构建的文本类型是使用条款、隐私政策等。作为简化,包含或多或少基于网络表单响应的内容的法律文本。
编辑:文本与表格分开生成。我们只有回复。
因此,我的方法是将文本块(段落)存储为数据库的列。每列连同:
- 其部分内的位置
- 作为条件进行评估的代码。如前所述,将在运行时提供用于评估该代码的上下文。
因为我们可以有一个或多个条件来评估以确定一段文本是否将包含在最终文本中,所以我不确定要使用哪种数据结构。
关系数据库?列数将是动态的,因为在每种情况下都存在最初无限数量的要评估的条件。
NoSQL 数据库?,将结构存储为 JSON,包含文本 + 条件数组?
还有其他方法吗?
我用不同的方法解决了这个问题。
我们在前端构建文本文件,方法是将 2 种类型的小部件拖放到 canvas(代表文本文件的内容)中:
- 简单的文本块
- 条件小部件:它们将 show/hide 基于运行时在前端评估的条件的文本块(这是关键)。类似于 Angular
ng-if
.
然后我们编译全文,也是在前端。
因此,后端只存储文本块。无需将条件逻辑转换为数据库。现在甚至听起来很傻...
让我们设置场景。这是一个文本文件:
INTRODUCTION
Paragraph 01
Paragraph 02
Paragraph 03
SECTION XXXXXX
Paragraph 01
Paragraph 02
SECTION YYYYYY
Paragraph 01
SECTION ZZZZZZ
Paragraph 01
Paragraph 02
Paragraph 03
每个段落可以包含更多段落,但让我们保持简单。
我们希望通过以下简单规则以编程方式构建文本文件:
- 部分始终存在,至少包含一个段落
- 任何段落都可以根据一个或多个条件显示或不显示。条件被定义为根据上下文评估的代码(例如,考虑 Python 中的
eval
函数)。 - 将在运行时提供上下文
- 段落可以以数字开头。因此,我们不能将数字作为段落的一部分(段落可以存在也可以不存在,并且它们的数字必须遵循正确的顺序:1、2、3 等)
要构建的文本类型是使用条款、隐私政策等。作为简化,包含或多或少基于网络表单响应的内容的法律文本。
编辑:文本与表格分开生成。我们只有回复。
因此,我的方法是将文本块(段落)存储为数据库的列。每列连同:
- 其部分内的位置
- 作为条件进行评估的代码。如前所述,将在运行时提供用于评估该代码的上下文。
因为我们可以有一个或多个条件来评估以确定一段文本是否将包含在最终文本中,所以我不确定要使用哪种数据结构。
关系数据库?列数将是动态的,因为在每种情况下都存在最初无限数量的要评估的条件。
NoSQL 数据库?,将结构存储为 JSON,包含文本 + 条件数组?
还有其他方法吗?
我用不同的方法解决了这个问题。
我们在前端构建文本文件,方法是将 2 种类型的小部件拖放到 canvas(代表文本文件的内容)中:
- 简单的文本块
- 条件小部件:它们将 show/hide 基于运行时在前端评估的条件的文本块(这是关键)。类似于 Angular
ng-if
.
然后我们编译全文,也是在前端。
因此,后端只存储文本块。无需将条件逻辑转换为数据库。现在甚至听起来很傻...