选择正确的数字类型

一般情况下,可使用可排序的数字类型,如SortableIntField, SortableLongField,
SortableFloatField 和 SortableDoubleField。在排序方便,这些可排序的数字类型会比 IntField, LongField, FloatField 和 DoubleField 有更好的排序表现。
如果经常需要在数字类型的字段上进行范围查询,可以考虑使用 TrieField,当索引越来越大时,它会提供更快的速度。

schema.xml 总结

schema.xml 第一级的结构如下所示:这个例子不是一个完整的 xml ,但是给出了这个文件重要的部分
&lt;schema&gt;<br />
&lt;types&gt;<br />
&lt;fields&gt;<br />
&lt;uniqueKey&gt;<br />
&lt;defaultSearchField&gt;<br />
&lt;solrQueryParser defaultOperator&gt;<br />
&lt;copyField&gt;<br />
&lt;/schema&gt;

其中最重要的是 types 和 fields,另外包括 复制字段、唯一键、默认查询操作符

其他 schema 元素–查询解析操作符

在使用多个条件进行查询时,Solr 可能返回满足所有条件的结构或者满足部分条件的结果。operator 控制这一行为,operator 包含 AND 和 OR,AND 将返回满足所有条件的结果,OR将返回满足任一条件的结果。
在 schema.xml,使用 solrQueryParser 元素来控制使用 AND 还是 OR。默认 operator 的设置只在 lucene 查询时生效,对于 DisMax 和扩展的 DisMax 无效,DisMax 和扩展 DisMax 内部采用硬编码的方式使用了 OR 操作。
<br />
&lt;solrQueryParser defaultOperator=&quot;OR&quot;/&gt;<br />

其他 schema 元素–默认搜索字段

在使用lucene查询解析器时,如果没有指定字段名称,将在 defaultSearchField 进行查询。DisMax 和 扩展的 DisMax 查询解析中不会使用这个值。
定义默认查询字段格式如下:

&lt;defaultSearchField&gt;text&lt;/defaultSearchField&gt;

其中 text 为字段名称。

其他 schema 元素–uniqueKey

uniqueKey 元素用来表示一个文档的唯一值,类似数据库ID。尽管uniqueKey不是必须,但在程序设计过程中还是建议使用。举个例子,在更新一个文档时,需要通过uniqueKey来找到需要更新的文档。uniqueKey在schema中是这样定义的:

&lt;uniqueKey&gt;id&lt;/uniqueKey&gt;

动态字段

动态字段(Dynamic fields)允许 solr 索引没有在 schema 中明确定义的字段。这个在忘记定义一些字段时很有用。动态字段可以让系统更灵活,通用性更强。
动态字段和成规字段类似,除了它名字中包含一个通配符外,在索引文档时,一个字段如果在常规字段中没有匹配时,将到动态字段中匹配。
假设schema中定义了一个叫*_i的动态动态字段,如果要索引一个叫 cost_i 的字段,但是 schema 中不存在 cost_i 的字段,这样 cost_i  将被索引到 *_i 字段中。
动态字段也是定义在 schema.xml 文件中,和其他字段一样,它也有个名词,字段类型,和属性。

&lt;dynamicField name=&quot;*_i&quot; type=&quot;sint&quot; indexed=&quot;true&quot; stored=&quot;true&quot;/&gt;

建议在 schema.xml 定义一些基本的动态字段,以备扩展之用。

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress   闽ICP备18020075号-1