Значение поля равно 1 или true в результатах поиска solr - PullRequest
3 голосов
/ 06 января 2011

У меня есть одно поле, которое индексируется как строка в schema.xml от Solr, которая взята из логического (tinyint) столбца в базе данных mysql.

В запросе я выполняю поиск в этом поле, используя 1. Но без каких-либо изменений этот запрос не может вернуть правильные результаты, как это было раньше. После того, как я использовал true вместо 1, он снова заработал. Теперь это снова идет не так, но с истиной, нет проблем с 1.

Какая здесь проблема? Нужно ли менять тип поля в schema.yml на integer?

Заранее спасибо.

1 Ответ

5 голосов
/ 06 января 2011

Поскольку это строковое поле, мы не можем знать, как вы его проиндексировали.Это может быть "true" / "false" или "1" / "0" или "on" / "off" и т. Д. Или даже их сочетание, возможно, у вас есть документы с "true" и некоторые с "1".

Если это семантически логическое поле, я рекомендую использовать логический fieldType, например:

<field name="inStock" type="boolean" indexed="true" stored="true" />

, чтобы это работало, вам нужно объявить логический fieldType (он объявляется в схеме по умолчанию):

<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/>

Не забудьте перестроить индекс после этого изменения.

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