用户指南

索引
准备工作 定制文件类型 快捷图标 文件识别 文件描述 首选程序 额外属性 创建索引 添加数据 查询数据

# 操作练习：文件类型， 属性，索引和查询

本篇文档主要用于展示 属性，查询，索引和定制文件类型。我们将会创建一个数据库来记录我们的DVD库。

## 准备工作

首先确定能够满足我们需要的文件类型和属性，最初，我想使用一个书签文件来链接到电影的网络电影数据库页面，但是Haiku暂时没有类似于“BeOS”的支持“书签”的NetPositive浏览器，所以我使用了下面的方法：该文件是一个JPEG格式图像，并且作为电影的封面。
现在有了 WebPositive，Haiku 有课可以使用书签文件的浏览器，所以您可以使用书签文件来替换图像来作为我们数据库文件的基本文件类型。
总之，我们为这些文件添加一些属性。那么接下来我们需要确定是否会再次进行查询（之后我们将其添加到索引），如果这样，那么需要使用何种类型的属性。数值 (int, float) 不同于文本，可以进行计算 (</=/> vs. is/contains/starts with)。

我希望可以把下面的属性用于DVD文件：

- Movie title（电影标题）
- Genre （流派）
- URL to e.g. IMdB（网站）
- Director/Cast （导演/演员）
- Plot （策划）
- My rating from 1 to 10 （星级）
- 安排我的书架，例如 A2，B3，这样我可以在现实生活中找出 DVD。
- 如果这样，谁借走了磁盘...

## 定制文件类型

打开文件类型首选项，然后点击位于左边分级列表之下的Add... 按钮。之后打开一个小对话框，然后指定新的文件类型所属的MIME组。当然您可以新建一个MIME组。我们把文件类型放置在 “applications” 组，把 “Internal Name” 设置为 DVDdb 。

现在，打开了您新建的DVDdb文件类型的面板：

### 快捷图标

双击快捷图标，将会打开 Icon-O-Matic 来为您的文件类型设计一个快捷图标。您也可以使用其他文件类型的图标，也可以将其稍作修改之后再使用。

### 文件识别

您也可以添加文件后缀作为扩展名来识别文件类型，例如，.txt，.jpg，.mp3。如果是在其他的没有MIME类型的系统上处理文件，后缀将会非常有用，但是在我们的示例中不需要这样做。

### 文件描述

- 类型名 - 它主要出现在Tracker窗口中的属性菜单和文件的“kind”属性中。
- 文件描述 - 更加详细的描述。

### 首选程序

快捷菜单中显示了所有可用于处理该类型文件的程序的列表，从该列表中，您可以选择打开该类型文件的首选程序，并且在双击文件时，该程序将会自动启动。

Select... |  | 打开一个对话框，您可以选择打开该类型文件的首选应用程序。在本示例中，我们选择 ShowImage 来显示DVD的封面。
Same as... |  | 打开一个对话框，你可以选择已经具有首选程序的文件，使两者使用相同的首选程序。

### 额外属性

在这里，我们输入在准备工作中决定的所有定制属性。点击 Add... 按钮打开一个面板：

- 属性名 - 出现在Tracker窗口顶部纵列中。

- 内部名称 - 用于索引和查询属性。

- Type - 定义了属性可以容纳的值，这样它才可以实现查询。
  - String 用于普通文本
  - Boolean 用于二进制数据： 0 或 1
  - Integer 用于不同范围的整形数据：
    - 8 bit: ± 255
    - 16 bit: ± 65,535
    - 32 bit: ± 4,294,967,295
    - 64 bit: ± 18,446,744,073,709,551,615
  - Float 用于单精度的浮点型数据
  - Double 用于双精度的浮点型数据
  - Time 用于时间和日期的格式

- Visible - 该复选框用于决定该属性在Tracker窗口中是否可见。由于Tracker将会是我们的DVD数据库界面，所以需要通过下面的选项来定义它的外观：
  - Display As - 使用 "Default"。将来可能会有更多可用的选项，例如， 星级评定等。
  - Editable - 用于确定在Tracker窗口中，是否可以进行属性的编辑。
  - Width - 在Tracker窗口中默认的属性列的宽度。
  - Alignment - 属性可以显示为居左，居中或者居右。

现在，输入我们的属性的所有信息：

内部名称 | 属性类型 | 索引 | 描述
--- | --- | --- | ---
DVDdb:title | text | yes | Movie title（电影标题）
DVDdb:genre | text | yes | Genre （流派）
DVDdb:url | text | no | URL （网站）
DVDdb:cast | text | yes | Director/Cast （导演/演员）
DVDdb:plot | text | no | Plot （策划）
DVDdb:rating | int-32 | yes | Rating 1 to 10 （星级评价）
DVDdb:coord | text | no | Shelf （货架）
DVDdb:lent | text | yes | Lent to （借出）

## 创建索引

在开始向我们的小的DVD数据库中输入数据之前， 我们需要为我们的索引添加确定的属性。只有进行了索引了的属性才可以使用Haiku的快速查询。
所以，我们将要查找什么呢？我们不需要问“在我的B4货架上的是什么呢？”或者“在网络电影库或者电影策划中包含 ‘pope-shenooda’ 吗？”

那么，我们选取了下面的属性：

内部名称 | 属性类型
--- | ---
DVDdb:title | text
DVDdb:genre | text
DVDdb:cast | text
DVDdb:rating | int-32

为了进行索引，我们打开终端，然后依次添加属性：

    mkindex -t string DVDdb:title
    mkindex -t string DVDdb:genre
    mkindex -t string DVDdb:cast
    mkindex -t int DVDdb:rating

-t 参数选项定义了属性的类型，除了 rating 属性是“int”型数字之外，其他的属性都是“string”类型。

## 添加数据

现在一切已经就绪，我们可以在数据库中加入一些数据。
由于我们的基本文件时封面图片，我们可以访问一些网络资源如 IMdb，查找首个电影，然后将其封面或者电影海报保存到新建的文件夹，以它作为 DVDdb 文件的保存位置。

打开该文件夹，我们看到在Tracker窗口中有一个JPEG图像。右键点击图像，使用 Filetype Addon 将其文件类型改为 `application/DVDdb` 。更多相关信息，请参阅文件类型文档。

接下来，我们在 Tracker 窗口的 Attributes 菜单中激活所有的 DVDdb 属性，根据我们的喜好对其进行排序：

通过点击仍为空的属性（或者按下 ALT E组合键），我们进入编辑模式，填写每个属性。利用 TAB 和 SHIFT TAB 快捷键，您可以在各个属性之间快速切换。

在我们的示例中，我们总是先下载一个JPEG封面，然后将其类型改为：applications/DVDdb 。还有另外的方法来创建此类型的文件，只需要复制一个该类型的空文件到 /boot/home/config/settings/Tracker/Tracker New Templates ，然后将其命名为 DVDdb 即可 。

右键点击Tracker窗口，您将会在 New... 下面的发现除了默认的 “New folder” 外的新元素。

## 查询数据

几个小时的辛苦工作之后，我们有了一个不错的小型数据库，您可以在这里查询具有7星级排名的克里斯蒂娜·里奇的电影了。

您可以为特别文件类型的查询结果制定一个有效的属性排列方式。
打开包含DVDdb文件的文件夹，然后依据您希望的查询结果排布方式对相应属性进行排列。通过 Attributes | Copy Layout 复制该属性布局。

打开 /boot/home/config/settings/Tracker/DefaultQueryTemplates，新建一个文件夹，将其命名为 group_filetype，在示例中，我们使用 “applications_DVDdb”。

打开新建的文件夹，通过 Attributes | Paste Layout 粘贴属性布局。Voilà: