Использование Lucene API для отображения плавающего поля из индекса Solr - PullRequest
3 голосов
/ 19 января 2012

Я унаследовал некоторый код, который использует API Lucene для запроса индекса Solr.

Код выполняет много поисков и в конце конвертирует все найденные документы lucene в документы solr:

// doc:Document

val sdoc = new SolrDocument

for (f:Fieldable <- doc.getFields if f.isStored) {
  sdoc.addField(f.name(),f.stringValue())
}

Это работает нормально, за исключением случаев, когда значение поля не является строкой, например плавает или логическое значение. В полях с плавающей точкой stringValue() возвращает некоторые странные символы (например, ¿£ ൱), предположительно строковое представление с плавающей точкой.

Как правильно получить значение с плавающей точкой из документа Lucene?

1 Ответ

3 голосов
/ 19 января 2012

Для числового значения, хранящегося в виде двоичного значения, вам необходимо получить doc.getBinaryValue (fieldName) вы получите byte [] в качестве возвращаемого значения, в которое вам нужно будет преобразовать его ваше соответствующее числовое значение. Это то, что вы могли бы сделать:

if(!field.isBinary()){
    sdoc.addField(fieldName, doc.get(fieldName));
} else{
    ByteBuffer buff = ByteBuffer.wrap(doc.getBinaryValue(fieldName));
    sdoc.addField(fieldName, buff.getFloat());
}

Вот SO Quetion , который предоставляет помощь с преобразованием.

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