我有一个使用相当多动态字段的Solr索引。我最近更改了代码以减少使用Solr索引的数据量,从而显着减少了正在使用的动态字段数。
我已经重新编制了我的数据索引,旧字段的文档计数(在管理模式浏览器中显示)已降至零。但我很困惑为什么这些领域仍然存在。我已经完成了优化,并重新启动了服务器,但是我找不到任何关于是否有办法让这些字段消失的信息。
除非我从头开始创建索引,否则我现在仍然坚持使用这些字段?我们谈论的是领域的显着减少(大约200 - > 30),我担心让它们漂浮在周围的性能影响。
我正在使用Solr 1.4。
编辑:动态字段定义仍然存在于schema.xml中,因为在少数情况下我仍然使用它们。只是基于它们的字段数量已经大大减少了。
编辑:
这些字段都不会被存储,只会被编入索引。所以我只是通过检查返回的文件才能看到它们,但我可以对它们进行分析。
以下是查询我仍在使用的字段的结果...
查询:
/?q=*:*&facet=on&facet.field=books_isbn_10_s_exact
结果:
<lst name="books_isbn_10_s_exact">
<int name="1010102457">2</int>
<int name="1110011010">2</int>
<int name="1110011013">2</int>
...
以下是其中一个空的结果......
查询:
/?q=*:*&facet=on&facet.field=mobiles_infrared_s_exact
结果:
<lst name="mobiles_infrared_s_exact"/>
这两个字段都在我的schema.xml中使用此字段定义:
<dynamicField name="*_s_exact" type="string" indexed="true" stored="false" termVectors="true" omitNorms="true" multiValued="false" />
我看到旧字段的唯一地方(例如mobiles_infrared_s_exact和大约100个其他地方)位于/ admin /中的Solr架构浏览器中。在哪里我可以看到所有我曾经使用的动态字段,即使其中大部分的文档计数为0。
我只是试图找出是否有一种方法可以从架构浏览器中删除它们,以及是否存在性能影响,因为我有一个10米文档的索引。
答案 0 :(得分:0)
当你做这样的事情时会发生什么:
/?q=mobiles_infrared_s_exact:xyzzy
您是否收到零文件或是否收到错误?
答案 1 :(得分:0)
在多轮架构迁移后,我已经检测到多个solr内核。您可以直接从lucene数据中拉出来自动化它,如:
/solr/your_core/admin/luke?numTerms=0&wt=json
[
// ...
fields: {
_version_: {
type: "long",
schema: "I-S-----OF------",
index: "-TS-------------",
docs: 761997
},
abstract_display: {
type: "string",
schema: "--S-M----------l",
dynamicBase: "*_display"
},
abstract_t: {
type: "text",
schema: "ITS-M-----------",
dynamicBase: "*_t"
}
//...
}]
然后根据非零fields
计数过滤docs
。至于在架构浏览器中删除它们,我只能在迁移到新的solr安装或从头开始重建核心时才能这样做。可能还有其他方法,但它确实不是Solr设置操作的东西。它可能会将跟踪视为内部工件。
实际上,这更像是solr架构浏览器问题,而不是solr问题。