Solr文档、字段和模式设计概述
Solr 的基本前提很简单。您给它很多的信息,然后你可以问它的问题,找到你想要的信息。您在所有信息中提供的内容称为索引或更新。当你问一个问题时,它被称为查询。
了解 Solr 工作原理的一种方法是将其想成一本 loose-leaf 的食谱。每次向书中添加食谱时,您都会在后面更新索引。您列出了您刚才添加的食谱的每个成分和页码。假设您添加100食谱。使用索引,你可以很快找到所有的食谱,使用嘴豆类,或朝鲜蓟,或咖啡,作为一种成分。使用索引要比每个食谱一个一个的快速。想象一本书的1000食谱,或100万。
Solr 允许你建立一个包含许多不同字段或条目类型的索引。上面的例子展示了如何用一个字段来构建索引:ingredients。你可以在为配方的烹饪风格指数等多个领域,像 Asian,Cajun 或者 vegan,你可以有一个索引字段的准备时间。Solr 可以回答这样的问题,比如:“在不到30分钟的时间内,可以准备哪些以血橙为原料的 Cajun 式食谱?
模式是您告诉 Solr 如何从输入文档建立索引的地方。
Solr 如何看待文档
Solr 的基本信息单元是一个文档,它是描述某些东西的一组数据。例如:配方文件将包含成分、说明、准备时间、烹饪时间、所需的工具等等。例如,关于一个人的文档可能包含该人的姓名、传记、最喜欢的颜色和鞋子大小。关于一本书的文档可能包含标题、作者、出版年份、页数等等。
在 Solr 宇宙中,文档由字段组成,这些字段是更具体的信息片段。我们比喻的鞋子的大小可能是一个领域,名字和姓氏可以是字段。
字段可以包含不同类型的数据。例如,名称字段是文本(字符数据)。鞋号字段可能是一个浮点数,以便它可以包含像 6 和 9.5 这样的值。显然,字段的定义是非常灵活的(例如,您可以将鞋号字段定义为文本字段而不是浮点数),但是如果您正确定义字段,Solr 将能够正确解释它们,并且您的用户在执行查询时会得到更好的结果。
您可以通过指定字段类型来告诉 Solr 字段包含的数据类型。字段类型告诉 Solr 如何解释字段以及如何查询。
当您添加一个文档时,Solr 将获取文档字段中的信息并将该信息添加到索引中。当您执行查询时,Solr 可以快速查阅索引并返回匹配的文档。
字段分析
字段分析告诉 Solr 在生成索引时如何处理传入的数据。这个过程的一个更准确的名字是处理(processing),甚至消化(digestion),但官方名称是分析。
例如,考虑个人文档中的传记字段。每一个传记的单词都必须编入索引,以便快速找到与番茄酱,蜻蜓或密码学有关的人。
然而,一本传记可能会包含很多你不关心的词,也不希望堵塞你的索引词,比如 “the”、“a”、“to” 等等。此外,假设传记中包含“番茄酱”一词,在句首是大写的。如果用户对 “番茄酱” 进行查询,即使传记包含大写的单词,您也希望 Solr 告诉你有关此人的信息。
这两个问题的解决方案是现场分析。对于传记字段,你可以告诉 Solr 如何将传记分解成文字。您可以告诉 Solr 你想让所有的单词小写,你可以告诉 Solr 删除重音符号。
字段分析是字段类型的重要组成部分。了解分析器、标记器和过滤器是对字段分析的详细描述。
Solr 的模式文件
Solr 存储有关模式文件中需要理解的字段类型和字段的详细信息。此文件的名称和位置可能会有所不同,具体取决于您最初如何配置 Solr 或稍后对其进行的修改。
- managed-schema 是 Solr 默认使用的模式文件的名称,用于支持通过 Schema API 或 Schemaless Mode 功能在运行时进行模式更改。如果您选择了,您可以 显式配置 managed-schema 功能以使用备用文件名,但文件内容仍由 Solr 自动更新。
- schema.xml 是模式文件的传统名称,可以由使用 ClassicIndexSchemaFactory 的用户手动编辑该模式。
- 如果您使用的是 SolrCloud,则您可能无法通过本地文件系统上的这些名称找到任何文件。您将只能通过 Schema API(如果已启用)或通过 Solr 管理界面的Cloud Screens 来查看模式。
无论您的安装中使用的文件的名称是什么,文件的结构都不会改变。但是,与文件交互的方式将会改变。如果您正在使用托管模式,则只能使用 Schema API 与文件进行交互,而不要进行手动编辑。如果您不使用托管模式,则只能对该文件进行手动编辑,而 Schema API 将不支持任何修改。
请注意,如果您没有使用 Schema API,但使用了 SolrCloud,则需要与 schema.xml 进行交互,通过 ZooKeeper 使用 upconfig 和 downconfig 命令来创建一个本地副本并上传您的更改。“ Solr 控制脚本参考”和 “使用 ZooKeeper 管理配置文件”中介绍了执行此操作的选项。