2012-11-12 7 views
2

У меня есть десятичный столбец в таблице MySQL, который представляет деньги. Я хочу импортировать эти данные с помощью обработчика импорта данных в Solr. Я не уверен, что лучше всего хранить эти данные. Я подумал об этих вариантах:Каков наилучший способ индексирования десятичной суммы, представляющей деньги в Solr?

Float: вводит неточности.

Строка: затруднит поиск диапазонов.

Int: потребовалось бы, чтобы каждое число умножалось на 100 до индексации и делилось на 100 при извлечении.

Валюта: новая для Solr 4.0. Является ли этот тип полей подходящим, или это для конверсий денег?

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

ответ

3

Основываясь на информации в определении CurrencyField на вики-странице Solr. Этот тип поля звучит как подходящее решение для вас. Он обеспечивает конвертацию денег, но это только в том случае, если вы должны использовать эту функциональность. Обратите внимание, что фасет по диапазону пока недоступен для этого типа поля.

+0

Знаете ли вы, есть ли трансформатор обработчика данных импорта для CurrencyField (Decimal-> CurrencyField)? – Kevin

+0

Похоже, что NumberFormatTransformer с помощью атрибута 'formatStyle' работает с типом поля валюты - http://wiki.apache.org/solr/DataImportHandler#NumberFormatTransformer –

+0

То есть для преобразования строки в формате валюты в десятичное число (а не другой способ вокруг). Я уже пробовал это сегодня. – Kevin

0

Как Пейдж предположил, CurrencyField является подходящим полем для использования.

Но если вам нужно использовать грань по диапазону, вы можете использовать второе поле с плавающей запятой, indexed = true, stored = false и использовать copyfield для копирования из исходного поля в плавающий. Затем вы можете использовать это неточное поле с плавающей запятой для фасетов по запросам диапазона и использовать исходную валюту для всего остального.