文档 字段 schema 概述

solr 基本前提是简单的。你给它很多信息,然后你可以问它问题并找到想要的信息。你提交所有信息的部分称为索引,你问问题称为查询。

理解 solr 如何工作的一个方法是想象一个食谱活页本。每次你添加食谱到本上,都会更新封底的索引。你列出每个原料和刚刚添加的食谱的页码。假设你添加了 100 个食谱,使用这个索引,你可以很快的找到使用了鹰嘴豆或洋蓟,或咖啡做原料的食谱。使用这个索引比一个接一个的查看食谱要快得多。想象一个有 1000 或 1,000,000 食谱的本本。

solr 让你创建一个有很多不同字段或很多类型条目的索引。上面的例子演示了如何创建只有一个字段 ingredients 的索引。你的索引应该还有其他字段,如烹调方式,例如 asiancajunvegan,以及索引字段准备时间。solr 可以回答诸如 "哪种卡津样式的食谱是以血橙作原料,准备时间少于 30 分钟" 这样的问题。

schema 就是你告诉 solr 应该如何从输入的文档创建索引的地方

solr 如何看这个世界

solr 的基本信息单位是文档(document),用于描述某样事物的一组数据。一个食谱的文档包含原料,操作指南,准备时间,烹调时间,需要的工具,等等。举个例子,关于一个人的文档,应该包含这个人的名字,档案,喜爱的颜色,鞋的尺码。书的文档可包含标题,作者,出版年份,页数,等等。

在 solr 的宇宙里,文档由字段组成,字段是更明确的信息块。鞋码可以是个字段,姓和名可以是字段。

字段能包含不同种类的数据。例如,名字字段是文本(字符型数据)。鞋码字段可能是浮点数,值可能是 6 或 9.5。显然,字段的定义是灵活的(例如,你可以定义鞋码字段为文本而非浮点数),但是,如果你正确的定义字段,solr 将正确的解释它们,你的用户执行查询时将得到更好的结果

你可以通过指定字段类型来告诉 solr 关于一类数据为一个字段。字段类型告诉 solr 如何解释字段及其如何被查询。

当你添加一个文档,solr 获取文档各字段的信息并添加这些信息到索引。当你执行一个查询,solr 就能迅速翻阅索引并返回匹配的文档。

字段解析

字段解析告诉 solr 创建索引时如何处理输入的数据。这个过程更精确的名称应该是处理或吸收,不过官方名称是解析。

例如,考虑一个人的文档里的档案字段。档案里的每个字都应该被索引,这样你就能迅速找到那些生活里与番茄酱,或星座,或密码有关的人。

但是,档案里可能包含很多你不在乎,也不想堵塞索引的字——例如 "the","a","to" 等等。此外,假设档案包含了 "Ketchup"(番茄酱) 这个字,首字母是大写的。如果有用户查询 "ketchup",你想要 solr 告诉你档案包含了大写字母的人。

这些问题的解决方案就是字段解析。对于档案字段,你可以告诉 solr 怎样把档案分词,你可以告诉 solr 你想要把所有词转成小写,你也可以告诉 solr 移除重音标记。

字段解析是字段类型的重要部分。Understanding Analyzers, Tokenizers, and Filters 是字段解析的详细描述。

solr 的 schema 文件

solr 保存它期望理解的字段和字段类型的细节在 schema 文件。这个文件的名字和位置基于你如何配置 solr 而变化。

  • managed-schema 是 solr 默认使用的名字,支持运行时通过 schema api 改变,或无 schema 模式。也可以配置一个新文件名,不过文件的内容仍然是由 solr 自动更新的。
  • schema.xml 是 schema 文件的传统名字,可以被用户手工修改,使用 ClassicSimilarityFactory
  • 如果使用的是 solrcloud,可能在本地文件系统找不到以上命名的文件。只能用 schema api(如果开启) 查看 schema,或通过 solr 管理界面的 cloud screen

不管你的 solr 用的是哪个名字的文件,文件的结构是不变滴。但是,你和文件交互的方式将改变。如果你在使用 managed schema,你只能用 shcema api 与之交互,不能手工编辑。如果不用 managed schema,只能手工修改该文件,不支持用 schema api 修改。

注意,如果你在用 solrcloud 而没有用 schema api,你可以用 upconfig 和 downconfig 命令创建一个 schema.xml 的本地拷贝并上传你的改变到 ZooKeeper。

results matching ""

    No results matching ""