从Solr 1.4索引中删除空动态字段

时间:2012-02-17 11:36:42

标签: solr

我有一个使用相当多动态字段的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米文档的索引。

2 个答案:

答案 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问题。