【发布时间】:2012-02-17 11:36:41
【问题描述】:
我有一个 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。
我只是想知道是否有办法从架构浏览器中删除它们,以及考虑到我有 1000 万个文档的索引,它们是否存在对性能的影响。
【问题讨论】:
-
以防万一,您是否删除了架构中的动态字段声明?
-
我没有,我仍然需要该领域的一些实例,但不是大多数。我将更新问题以澄清。
-
那我不明白...你能告诉我们你在哪里看到这些不需要的字段吗?
-
在管理员模式浏览器中,因此我可以看到文档计数为零。我可以看到索引中每个字段的列表,包括从动态字段定义生成的字段。并且不再使用的生成字段仍然出现在索引中,而我预计它们会在优化后被删除。
-
尝试使用 TermsComponent (wiki.apache.org/solr/TermsComponent) 获取包含这些不需要的字段(及其值)的文档。
标签: solr