在数据库中更新操作后删除索引
Indexes getting removed after update operation in database
我正在使用 Basex 版本 8.6.6 我正在从 GUI 在数据库上创建全文索引,当数据库上发生任何更新操作时,所有创建的索引都会被删除。
当我使用 ft 模块搜索任何内容时,出现数据库 "test" 没有全文索引的错误。
我希望如果索引已经创建则不应将其删除。
我该如何解决这个问题?
当您更新数据库时,索引显然不再有效(如果没有自动执行任何操作)。 BaseX 的默认行为是简单地删除索引。有几种可能性来处理这个问题,它们都在 https://docs.basex.org/wiki/Indexes#Updates
的 BaseX 文档中进行了解释
鉴于您似乎使用全文索引,您基本上有两个选择:
- 每次更新操作后调用优化,或者通过 XQuery db:optimize() or via the BaseX command OPTIMIZE
- 启用增量索引。为此,您必须将 UPINDEX and AUTOOPTIMIZE 都设置为 true.
请注意,如果您有很多小的更改并且数据库很大,那么第二个选项可能会非常昂贵,因为它会在每次小更新后重新创建整个索引。
我正在使用 Basex 版本 8.6.6 我正在从 GUI 在数据库上创建全文索引,当数据库上发生任何更新操作时,所有创建的索引都会被删除。
当我使用 ft 模块搜索任何内容时,出现数据库 "test" 没有全文索引的错误。
我希望如果索引已经创建则不应将其删除。
我该如何解决这个问题?
当您更新数据库时,索引显然不再有效(如果没有自动执行任何操作)。 BaseX 的默认行为是简单地删除索引。有几种可能性来处理这个问题,它们都在 https://docs.basex.org/wiki/Indexes#Updates
的 BaseX 文档中进行了解释鉴于您似乎使用全文索引,您基本上有两个选择:
- 每次更新操作后调用优化,或者通过 XQuery db:optimize() or via the BaseX command OPTIMIZE
- 启用增量索引。为此,您必须将 UPINDEX and AUTOOPTIMIZE 都设置为 true.
请注意,如果您有很多小的更改并且数据库很大,那么第二个选项可能会非常昂贵,因为它会在每次小更新后重新创建整个索引。