Почему я не могу найти поле "0" в Solr? - PullRequest
3 голосов
/ 28 сентября 2010

Из schema.xml:

<field name="myfield" type="integer" indexed="true" stored="false"/>

Запись с идентификатором 5 имеет myfield со значением 0, что я подтвердил, выполнив поиск простого id:5 и просмотрев objectXml.

Поиск id:5 AND myfield:0 не возвращает записей.

Однако поиск id:5 AND -myfield:1 возвращает ожидаемую запись.

Почему?

- Дополнительная информация:

Определение для целочисленного типа: <fieldType name="integer" class="solr.IntField" omitNorms="true"/>

Версия Solr: 1.4

Ответы [ 4 ]

1 голос
/ 28 сентября 2010

Какой класс связан с «целочисленным» типом поля?Считает ли он 0 маркером отсутствия индексации?

Как выглядят данные индекса для этого документа в админке?

0 голосов
/ 06 октября 2010

Я решил проблему. Это была ошибка в ядре приложения (сторонняя CMS) и не имела ничего общего с Solr.

Проблема заключалась в том, что код поставщика проверял, не было ли индексируемое значение перед его индексацией ложным. К сожалению, они делали так:

$value = strval($node);
if ($value)

Конечно, 0 оценивается как ложное, даже если это строка "0".

Я изменил его на:

$value = strval($node);
if ($value !== false)

... и теперь это работает.

Спасибо за ваши усилия и извините, что проблема оказалась чем-то совершенно не связанным.

0 голосов
/ 04 октября 2010

Я попробовал ваш случай, предполагая, что вы использовали стандартный тип поля для int:

<fieldtype name="integer" class="solr.TrieIntField" ... />

Это прекрасно работает.Так что я думаю, что определение типа поля integer как-то не так.Проверьте это определение.

0 голосов
/ 29 сентября 2010

Числовые поля требуют числовых запросов.Попробуйте указать для поля другое значение, отличное от числового.

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