使用bin/post并在Solr 6.6.1中启用文本字段高亮的合规方法
嘿,我来帮你搞定这个!在Solr 6.6.1里,managed-schema确实是被Schema API管控的,官方不建议手动编辑它——不过别担心,有两种靠谱的方式来添加文本字段并启用高亮功能:
方法一:使用Schema API(推荐,无需重启)
这是Solr官方推荐的管理schema的方式,所有修改都会实时生效,不用重启服务。
1. 添加自定义文本字段
用curl发送POST请求到你的core的schema端点,比如要添加一个名为custom_text的文本字段(类型用text_general,支持存储和索引):
curl -X POST -H 'Content-type:application/json' --data-binary '{ "add-field": { "name": "custom_text", "type": "text_general", "stored": true, "indexed": true } }' http://localhost:8983/solr/myCore/schema
stored: true:表示字段内容会被存储,方便后续返回或高亮显示indexed: true:表示字段会被索引,支持搜索和高亮
2. 启用该字段的高亮功能
高亮有两种启用方式:
方式A:查询时指定参数(灵活)
每次搜索时,直接在URL里添加高亮参数即可,比如:
http://localhost:8983/solr/myCore/select?q=你的关键词&hl=true&hl.fl=custom_text
hl=true:开启高亮功能hl.fl=custom_text:指定要高亮的字段(可以多个字段用逗号分隔)
方式B:设置默认高亮字段(永久生效)
如果想让该字段默认就开启高亮,可以用Config API修改solrconfig.xml的配置:
curl -X POST -H 'Content-type:application/json' --data-binary '{ "set-property": { "queryResponseWriter.responseFormatters.hl.defaultFields": "custom_text" } }' http://localhost:8983/solr/myCore/config
之后只需要加hl=true就能自动高亮custom_text字段了。
方法二:切换到传统的schema.xml(适合手动编辑爱好者)
如果你更习惯手动编辑配置文件,可以切换回经典的schema.xml模式:
复制并重命名配置文件
进入server/solr/myCore/conf目录,把managed-schema复制一份,改名为schema.xml:cd server/solr/myCore/conf cp managed-schema schema.xml修改solrconfig.xml
打开solrconfig.xml,找到<schemaFactory>标签,把原来的ManagedIndexSchemaFactory配置替换成经典模式:
原配置大概是这样:<schemaFactory class="ManagedIndexSchemaFactory"> <bool name="mutable">true</bool> <str name="managedSchemaResourceName">managed-schema</str> </schemaFactory>替换为:
<schemaFactory class="ClassicIndexSchemaFactory"/>手动添加字段
打开新的schema.xml,直接添加你的自定义字段:<field name="custom_text" type="text_general" stored="true" indexed="true"/>重启Solr服务
修改完成后,重启Solr让配置生效。配置高亮
同样可以在solrconfig.xml里设置高亮默认字段,或者查询时用参数指定,和方法一的高亮配置一致。
内容的提问来源于stack exchange,提问作者Sol

