Solr 中的存储字段正在查询中显示,为什么?
Stored fields in Solr are getting displayed in queries , why?
我刚开始使用 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
也许有人可以给我重新编制索引的详细步骤。
当您更改 schema.xml 文件并重新启动 solr-server 时,更改仅适用于新文档。这意味着您必须清除索引并重新索引所有文档(查询标记器除外,这些更改在服务器重新启动后立即生效,但这里不是这种情况)。重新编制索引后,id
字段不应再可见。
另一条评论:您不必使用 curl 测试您的查询。当您使用网络浏览器连接到 http://localhost:8983/solr
时,您应该会在那里找到一个管理界面。在那里你可以 select 一个核心并测试你的查询。
请参阅此 https://lucene.apache.org/solr/guide/6_6/docvalues.html 文档。
Non-stored docValues fields will be also returned along with other
stored fields when all fields are
specified to be returned (e.g. “fl=*”) for search queries depending on
the effective value of the useDocValuesAsStored parameter for each
field. For schema versions >= 1.6, the implicit default is
useDocValuesAsStored="true".
String 字段类型有 docValues="true" 。这就是它出现在搜索响应中的原因。
您可以将 useDocValuesAsStored="false" 参数添加到该字段,也可以使用不同的字段类型,比如 text_general。
我刚开始使用 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
也许有人可以给我重新编制索引的详细步骤。
当您更改 schema.xml 文件并重新启动 solr-server 时,更改仅适用于新文档。这意味着您必须清除索引并重新索引所有文档(查询标记器除外,这些更改在服务器重新启动后立即生效,但这里不是这种情况)。重新编制索引后,id
字段不应再可见。
另一条评论:您不必使用 curl 测试您的查询。当您使用网络浏览器连接到 http://localhost:8983/solr
时,您应该会在那里找到一个管理界面。在那里你可以 select 一个核心并测试你的查询。
请参阅此 https://lucene.apache.org/solr/guide/6_6/docvalues.html 文档。
Non-stored docValues fields will be also returned along with other stored fields when all fields are specified to be returned (e.g. “fl=*”) for search queries depending on the effective value of the useDocValuesAsStored parameter for each field. For schema versions >= 1.6, the implicit default is useDocValuesAsStored="true".
String 字段类型有 docValues="true" 。这就是它出现在搜索响应中的原因。
您可以将 useDocValuesAsStored="false" 参数添加到该字段,也可以使用不同的字段类型,比如 text_general。