他们为什么在Solr中创建"schema.xml"的概念?

Shr*_*ath 3 lucene indexing search solr solrj

Lucene通过"编码"来搜索和编制索引......为什么Solr不这样做?为什么我们需要一个schema.xml?它的重要性是什么?有没有办法避免将我们想要的所有字段放入schema.xml?(我想动态字段是要走的路,对吧?)

Mau*_*fer 6

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

模式允许您以声明方式定义每个字段的分析和查询方式.

如果您想要一个基于Lucene的无架构服务器,请查看ElasticSearch.


Nic*_*zny 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"/>
Run Code Online (Sandbox Code Playgroud)

这对应于其早期的文本定义fieldType.

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