3

Lucene 进行搜索和索引,所有这些都是通过“编码”来实现的……为什么 Solr 不这样做呢?为什么我们需要 schema.xml ?它的重要性是什么?有没有办法避免将我们想要的所有字段放入 schema.xml ?(我想动态字段是要走的路,对吧?)

4

3 回答 3

6

这就是它的建造方式。Lucene 是一个库,因此您可以将代码链接到它。另一方面,Solr 是一个服务器,在某些情况下,您只需很少的编码就可以使用它(例如,使用 DataImportHandler 来索引和 Velocity 插件来浏览和搜索)。

该模式允许您以声明方式定义如何分析和查询每个字段。

如果您想要基于 Lucene 的无模式服务器,请查看ElasticSearch

于 2011-02-27T19:34:03.930 回答
5

如果您想避免不断调整您的 schema.xml,那么动态字段确实是要走的路。例如,我喜欢 Sunspot schema.xml——它使用动态字段在字段名称中设置基于类型的命名约定。

https://github.com/outoftime/sunspot/blob/master/sunspot/solr/solr/conf/schema.xml

基于这个模式,一个名为的字段content_text将被解析为一个文本字段:

<dynamicField name="*_text" stored="false" type="text" multiValued="true" indexed="true"/>

这对应于它之前对文本的定义fieldType

我使用的大多数 schema.xml 文件都是从 Sunspot 模式开始的。我发现通过在 schema.xml 中建立和重用一个好的约定可以节省大量时间。

于 2011-02-28T14:34:24.280 回答
1

Solr 充当独立的搜索服务器,无需编码即可配置。您可以将其视为 Lucene 的前端。schema.xml 文件的目的是定义您的索引。

如果可能,我建议在架构文件中定义所有字段。这使您可以更好地控制这些字段的索引方式,并允许您利用复制字段(如果您需要它们)。

于 2011-02-27T19:55:42.453 回答