1.4.8 拼凑在一起(putting the pieces together)

时间:2021-09-13 09:08:37

putting the pieces together

  在最高的级别,schema.xml结构如下,

<schema>
<types>
<fields>
<uniqueKey>
<defaultSearchField>
<solrQueryParser defaultOperator>
<copyField>
</schema>

  明显的,这最重要的内容是在types和fields中,也就是字段类型和实际字段定义存在的地方.这些字段也可以通过copyFields补充,夹在字段fields和复制字段copyField之间的是唯一主见uniqueKey,默认搜索字段和默认查询操作.

  选择合适的数据类型

  用于一般的数字需要,使用可排序的字段类型,SortableIntField,SortableLongField,SortableFloatField和SortableDoubleField.这些字段类型将会按照数字排序,而不是按照字典顺序排序.

  如果用户希望在数字类型上做频繁的范围查询,考虑使用TrieField类型.它以增加索引大小为成本的基础之上提供了更快速度的范围查询.

  使用Text

  通过文本搜索提供给你的用户最可能的结果集,这样妥善的处理文本的方式会使你得用户很高兴.

  一种技术就是使用text字段作为关键字搜索的捕捉字段.大多数用户的搜索并不是很复杂,基本上都是一个简单的关键词搜索,你可以使用copyField来获取多种字段,然后将它们全部导入到一个简单的text字段用于关键词搜索.这个例子中的schema代表了一个商店,copyField字段用于存储cat,name,manu,features和includes到一个单独的字段text.另外,将ID复制到text中以防用户想要通过商品的id号来搜索.

  另一种技术就是使用copyFiled,以不同的方式来使用同一个字段.假如你有一个字段author,表示作者的列表.像这样:

   Schildt, Herbert; Wolpert, Lewis; Davies, P.

  通过作者来搜索,你需要标记(tokenize)这个字段,转换小写,去掉标点符号:

    schildt / herbert / wolpert / lewis / davies / p

  对于排序,只需要为标记(untokenized)字段,转换小些,去掉标点符号.

   schildt herbert wolpert lewis davies p

  最后,对于分面(facet),只需要主要作者,使用StringField.

   Schildt, Herbert