Удаление пустых динамических полей из индекса Solr 1.4 - PullRequest
4 голосов
/ 17 февраля 2012

У меня есть индекс Solr, который использует довольно много динамических полей. Недавно я изменил свой код, чтобы уменьшить объем данных, которые мы индексируем с помощью Solr, значительно уменьшая количество используемых динамических полей.

Я переиндексировал свои данные, и количество документов (как показано в браузере схемы администратора) для старых полей упало до нуля. Но я не понимаю, почему поля все еще существуют. Я выполнил оптимизацию и перезапустил сервер, но не могу найти никакой информации о том, есть ли способ заставить эти поля исчезнуть.

Не застрял ли я с этими полями, если не создаю индекс с нуля? Мы говорим о значительном сокращении полей (около 200 -> 30), и я беспокоюсь о влиянии на производительность их сохранения.

Я использую Solr 1.4.

Edit: определения динамического поля все еще существуют в schema.xml, потому что я все еще использую их в некоторых случаях. Просто количество полей на их основе значительно сократилось.

Edit:

Ни одно из этих полей не сохраняется, только индексируется. Так что я не вижу их, просто проверяя возвращенные документы, но я могу посмотреть на них.

Вот мои результаты для запроса на поле, которое я все еще использую ...

Запрос:

/?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 других), находится в браузере схемы Solr в / admin /. Где я могу видеть все динамические поля, которые я когда-либо использовал, даже при том, что количество документов для большинства из них равно 0.

Я просто пытаюсь выяснить, есть ли способ удалить их из браузера схемы, а также определить, влияют ли они на производительность, если у меня индекс 10 млн. Документов.

Ответы [ 2 ]

0 голосов
/ 31 января 2015

Я обнаружил это для нескольких ядер solr после нескольких циклов миграции схемы.Вы можете автоматизировать его, извлекая данные непосредственно из люцены, например:

/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.

0 голосов
/ 04 марта 2012

Что происходит, когда вы делаете что-то вроде этого:

/?q=mobiles_infrared_s_exact:xyzzy

Получили ли вы нулевые документы или получили ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...