【发布时间】:2012-04-26 10:09:34
【问题描述】:
我正在尝试从纯 sqlite(使用 FMDB 包装器)迁移到核心数据。
我的主要原因是 icu 问题(我有一些多语言项目 - 德语、西班牙语、希腊语、中文)很难从 sqlite 中搜索到,而不是核心数据上内置的 icu。 (NSDiacriticInsensitive | NSCaseInsensitive)
通常我的数据(一本编码书)采用以下结构:
id
parentId
content
contentType
nContent
vieworder
其中 nContent 是我需要放弃的变音符号/不区分大小写字段,因为它会大大降低我的数据库速度(我使用过索引,我使用过优化,但我找不到任何东西来加快搜索过程)。
我对核心数据概念感到困惑——我可以在主从项目上理解它,但我无法理解如何实现自引用项目对象——
用上述结构存储的典型数据是这样的:
Chapter A
Chapter A.1
Title 1
Content #1
Title 2
Content #2
Chapter A.2
[...]
“Chapter/Title/Content”是内容字段(因此它从 >256 的小字符串到大的文本块不等)。
所以我的问题是: * 如何在核心数据实体/类中实现这种结构(我知道需要自引用关系) * 如何找到每个级别的项目(例如我想找到所有的 Title 类型——这就是我有 contentType 字段的原因) * 在核心数据结构上建立索引是否会比普通 sql 提供更好的索引和更好的时间搜索率(我在 nContent 字段上使用 LIKE %% 结构)? * 将其留在 SQLITE 上并尝试寻找不同的索引策略会更好吗?
请随时回答这些问题或至少给我一些见解。
更新 这是我的意思的另一个更“现实”的例子:
Beginning HTML (Type: Chapter, parentid:0,id:1)
The fundamental pieces (Type Chapter, parentid:1, id:2)
How to begin (Type: title, parentid:2, id:3)
[content] (Type: content, parentid:3, id:4)
Using paragraphs (Type title, parentid:2, id:5)
[content] (Type: content, parentid:5, id:6)
Using Forms (Type: chapter, parentid:1, id:7)
... (and so on)
【问题讨论】: