创建索引
Solr索引构建概览
从宏观层面看,Solr 的索引构建可分解为三个主要任务: 1. 将文档从原始格式转换为 Solr 支持的格式,例如,XML 或 JSONÿ 2. 从良好定义的接口方法中选择一种,通常使用 HTTP POST, 将文档添加到Solr。 3. 在索引中,通过配置 Solr, 对文档的文本进行转换。
![c6ccb31307b3ba244b1ffea675cd256c.png](https://i-blog.csdnimg.cn/blog_migrate/5dd047cc639563403a042c71d48545df.jpeg)
设计schema
文档粒度
schema 的设计过程实际是确定文档如何表征为Solr索引的过程。要充分考虑文档粒度对用户搜索体验造成的影响。通常,文档粒度的选择尽量不要让用户感到“见木不见林”。
唯一键
Solr不要求每个文档都有一个唯一识别符,但若提供,Solr 会将其用于去除索引中的重复文档。
索引字段
索引字段选择 的最佳方法是,询问典型用户是否能使用该字段构造有意义的査询表达式。另一种方法是,如果搜索表单没有提供该字段的査询选项,但用户会提及它,那么这个字段就应该被索引。
为了启用搜索,需要对索引字段进行标记,还需要对字段值进行排序、分面、分组、查询建议及执行 函数查询等。
存储字段
一般情况下,文档可能包含了一些对搜索本身无用的字段,但这些字段显示在搜索结果中仍然是有用的。Solr 将这些字段称为存储字段 (stored fields) 。
一个字段可以同时被索引和存储字段。
schema.xml为什么要改成managed-schema?
https://blog.csdn.net/rentuo53/article/details/84925344https://blog.csdn.net/weixin_42257250/article/details/83030083
在schema.xml 中定义字段
必备字段属性
每个字段都有唯一名称,查询构造时会调用这个名称。
另外,Solr 不允许嵌套字段。schema.xml的所有字段都是同级的,也就是一个平面文档结构。
每个字段必须定义类型属性,通过 识别字段类型。
<field name= "screen_name" type="string" indexed= "true" stored="true"/>
此定义表示 screen_name 字段既被索引又被存储,其包含字符串值。
多值字段
在 schema.xml 的字段定义中,通过设置 multiValued="true" 来声明 多值字段
<field name="link" type="string" indexed= "true" stored= "true" multiValued="true"/>
如果添加的文档包含多个链接, 向 XML 文档添加多个 link 字段:
<add>
<doc>
<field name="id">2</field>
...
<field name="link">http://manning.com/grainger/</field>
<field naune="link">http://lucene.apache.org/solr/</field>
...
</doc>
</add>