我是使用Solr的新手,我创建了一个新核心并将默认schema.xml
复制到conf/
文件夹。我所做的改变非常简单。
<field name="id" type="string" indexed="true" stored="false" required="true" multiValued="false" />
如您所见,我将id
字段设置为 stored = false 。根据我的理解,当我进行查询搜索时,现在不应显示字段id
。但那并没有发生。我尝试重新启动solr实例,并进行查询以再次索引文件。
curl 'http://localhost:8983/solr/TwitterCore/update/json?commit=true'
--data-binary @$(echo TwitterData_Core_Conf/TwitterText_en_demo.json)
-H 'Content-type:application
根据Solr Wiki,这应该重新索引我的文件。但是,当我再次运行查询时,我仍然会看到Id
。
返回的文档示例(这不是完整的JSON节点,我只是复制了一些部分):
"text": [
"RT @FollowTrainTV: Moonseternity just joined #FollowTrainTV - Watch them stream on http://t.co/oMcOGA51kT"
],
"lang": [
"en"
],
"id": "0a8edfea-68f7-4b05-b370-27b5aba640b7", // I dont want to see this
"_version_": 1512067627994841000
也许有人可以给我详细的重新索引步骤。
答案 0 :(得分:0)
更改schema.xml文件并重新启动solr-server时,更改仅适用于新文档。这意味着您必须清除索引并重新索引所有文档(除了查询标记生成器,这些更改在服务器重新启动后立即生效,但这不是这种情况)。重新编制索引后,id
字段不应再显示。
另一句话:你不必用curl测试你的查询。当您使用网络浏览器连接到http://localhost:8983/solr
时,您应该在那里找到管理界面。在那里,您可以选择核心并测试您的查询。
答案 1 :(得分:0)
请参阅此https://lucene.apache.org/solr/guide/6_6/docvalues.html文档。
未存储的docValues字段也将与其他字段一起返回 当所有字段都为 指定要针对搜索查询返回的值(例如“ fl = *”),具体取决于 useDocValuesAsStored参数对每个参数的有效值 领域。对于架构版本> = 1.6,隐式默认值为 useDocValuesAsStored =“ true”。
String字段类型具有docValues =“ true”。这就是它出现在搜索响应中的原因。
您可以将useDocValuesAsStored =“ false”参数添加到该字段,也可以使用其他fieldType,例如text_general。