gpt4 book ai didi

solr - Solr的无模式功能如何工作?如何将其还原为经典架构?

转载 作者:行者123 更新时间:2023-12-03 14:38:38 25 4
gpt4 key购买 nike

刚发现Solr 5不需要预定义架构文件,而是根据正在执行的索引生成架构。我想知道这在后台如何工作?

以及这是否是一个好习惯?有什么办法可以禁用它吗?

最佳答案

The schemaless feature has been in Solr since version 4.3。但是直到现在a concurrency issue with it was fixed in 4.10才可能更稳定。

也称为托管模式。当您将Solr配置为使用托管模式时,Solr使用特殊的UpdateRequestProcessor来拦截文档索引请求,并猜测字段类型。

Solr从您的schema.xml文件开始,并创建一个默认情况下称为managed-schema的新文件,以存储所有推断出的模式信息。 Solr在检测到模式更改时会自动覆盖此文件。

如果要更改架构,则应使用Schema API。另请参见Schemaless Mode documentation

如何将Solr托管模式更改为经典模式

停止Solr:$ bin/solr stop

转到server/solr/mycore/conf,其中“ mycore”是您的核心/集合的名称。

编辑solrconfig.xml


搜索<schemaFactory class="ManagedIndexSchemaFactory">并注释整个元素
搜索<schemaFactory class="ClassicIndexSchemaFactory"/>并取消注释
搜索引用<initParams>add-unknown-fields-to-the-schema元素,并注释掉整个<initParams>...</initParams>


managed-schema重命名为schema.xml即可完成。

现在,您可以再次启动Solr:$ bin/solr start,转到http://localhost:8983/solr/#/mycore/documents并检查Solr现在拒绝使用schema.xml中尚未指定的新字段索引文档。

这是一个好习惯吗?什么时候使用?

这取决于您想要什么。如果您要强制执行特定的文档结构(例如,确保所有文档根据您的定义都是“格式正确的”),那么您想使用经典的架构管理。

另一方面,如果您事先不知道文档结构是什么,则可能要使用无模式功能。

限度

虽然它称为无模式,但是您可以建立索引的结构类型受到限制。顺便说一下,对于Solr和Elasticsearch都是如此。例如,如果您首先索引此文档:

{"name":"John Doe"}


那么如果您尝试为下一个文档编制索引,则会出现错误:

{"name": {
"first": "Daniel",
"second": "Dennett"
}
}


这是因为在第一种情况下,字段 name是字符串类型,而在第二种情况下,它是对象。

如果您想使用超出这些限制的索引,则可以使用 SIREn-这是一个 open source半结构化信息检索引擎,它作为Solr和Elasticsearch的插件实现。 (免责声明:我曾在开发SIREn的公司工作)

关于solr - Solr的无模式功能如何工作?如何将其还原为经典架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29819854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com