1

我是使用 Solr 的新手,我制作了一个新核心并将默认值复制schema.xmlconf/文件夹中。我所做的更改非常微不足道。

<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

也许有人可以给我重新索引的详细步骤。

4

2 回答 2

1

当您更改 schema.xml 文件并重新启动 solr-server 时,更改仅适用于新文档。这意味着您必须清除索引并重新索引所有文档(除了查询标记器,这些更改在服务器重新启动后立即生效,但这里不是这种情况)。重新索引后,该id字段不应再可见。

另一句话:您不必使用 curl 测试您的查询。当您连接到http://localhost:8983/solr您的网络浏览器时,您应该在那里找到一个管理界面。您可以在那里选择一个核心并测试您的查询。

于 2015-09-12T08:02:24.880 回答
1

请参阅此https://lucene.apache.org/solr/guide/6_6/docvalues.html文档。

当根据每个字段的 useDocValuesAsStored 参数的有效值指定为搜索查询返回所有字段(例如“fl=*”)时,非存储 docValues 字段也将与其他存储字段一起返回。对于架构版本 >= 1.6,隐式默认值为 useDocValuesAsStored="true"。

String 字段类型具有 docValues="true" 。这就是它出现在搜索响应中的原因。

您可以将 useDocValuesAsStored="false" 参数添加到该字段,也可以使用不同的 fieldType,例如 text_general。

于 2019-12-09T09:05:34.010 回答