整理和导入数据
导入数据至卡拉搜索
在开始为你的用户提供搜索服务前,你需要将数据传至卡拉搜索。这是因为我们的引擎并不能直接连接你的数据库,而需要你将数据传至卡拉搜索后,通过我们的服务器上为你的用户提供搜索服务。
这样一来,你可以省掉维护搜索服务器的麻烦,以及方便地在卡拉后台调整排序算法,专注于你的业务。
也就是说,使用卡拉搜索时有三个简单的步骤
- 你需要将数据从你的数据源(可能是数据库、文件、网页等形式)提取出来
- 将你的数据转为 JSON 格式
- 通过 SDK,API 或后台上传等方式将你的 JSON 数据发送给卡拉搜索
我们将在下文中详述上面几个步骤
1. 从你的数据源提取数据
卡拉搜索的引擎无法直接在你的数据源中搜索数据,因此你需要先将数据提取出来整理为可搜索的形式。
你的数据可能在以下任何一种数据来源中:
- 数据库 - 包括 MySQL,PostgreSQL,Redis,TiDB,Oracle DB,MongoDb,SQL Server 等
- 文本文件 - 包括 Excel 文件,DB 文件,TXT 文件,HTML 文件等
- 其它任意形式的数据存储,包括 HDFS 等
请注意,从搜索体验的角度考虑,以及从你的数据安全的角度考虑,在将你的数据发送给卡拉前,你通常需要先对数据进行处理。
2. 处理提取的数据
在步骤 1 中,你可以从任何数据源将数据读出。现在,你需要将数据转为 JSON 格式以便用 SDK 或 API 上传至卡拉搜索。
请注意,通常来说你并不需要将所有数据全部传给卡拉搜索。举个例子,如果你需要给定一个用户名,搜索用户的话,那么你的用户信息可能是如下
用户名 | 用户头像 URL | 用户活跃度 | 密码 | 上次上线时间 |
---|---|---|---|---|
张飞 | static/images/783.png | 88 | 7&39kjd | 1天前 |
王小虎 | static/images/277.png | 43 | &j2kucj | 3天前 |
李天王 | static/images/19.png | 99 | Hsuejck | 12天前 |
显然,你希望用户在输入查询 王
时,可以匹配到用户 王小虎
或 李天王
在这个例子中,对于搜索用户有用的数据只有用户名,用户活跃度和上次上线时间。
对于用户搜索,密码
这项数据显然不会搜索结果有任何帮助,同时你也应该将敏感数据隐去以保证用户数据安全。而对于 用户头像 URL
这项数据来说,对于搜索结果也没有帮助,因为不会有用户来搜索以数字命名的文件名。
将以上数据的第一行转为 JSON 后,即为
{"userName": "张飞","lastLogin": "1天前","active": 88}
3. 将数据传至卡拉搜索
在将数据提取为 JSON 格式后,我们需要将数据传通过 API 传至卡拉搜索。我们将一条数据称为一个对象,而对象会被传至你的索引中。上第 2 步的用户搜索例子中,一个文档就是一个用户的 JSON 数据,在卡拉搜索后台你可以建一个叫 users 的索引。
如果你想尝试一下将数据传至卡拉搜索,最简单的办法就是在后台添加一个索引,然后直接在后台界面中添加一个对象。添加完对象后,你就可以立即开始搜索你添加的数据了。