Solr Кодирование / Декодирование данных - PullRequest
0 голосов
/ 06 марта 2012

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

public static String compress(String inputString) {
    try {
        if (inputString == null || inputString.length() == 0) {
            return null;
        }
        return new String(compress(inputString.getBytes("UTF-8")));
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    return null;
}


private static byte[] compress(byte[] input) {
    try {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        GZIPOutputStream gzip = new GZIPOutputStream(out);
        gzip.write(input);
        gzip.close();
        return out.toByteArray();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;
}

Затем я отправляю в SOLR, и когда я пытаюсь вернуть его (игнорируя декодирование на данный момент, потому что оно терпит неудачу здесь)

SolrDocument resultDoc = iter.next();
String content = (String) resultDoc.getFieldValue("source");
System.out.println(content);

Если яотправьте строку типа «Здравствуйте, меня зовут Крис», закодированный будет выглядеть (игнорируя, какое переполнение стека изменилось);

 ã�������ÛHÕ……W»≠T»KÃMU»,VpŒ( ,�ìùùG���

Тем не менее, я получаю ответ от SOLR:

#31;ã#8;#0;#0;#0;#0;#0;#0;#0;ÛHÕ……W»≠T»KÃMU»,VpŒ( ,#6;#0;ìùùG#22;#0;#0;#0;

что, очевидно, приведет к сбою декодирования.Я попытался использовать установку Jetty и Tomcat с одной и той же проблемой.

1 Ответ

1 голос
/ 07 марта 2012

См. Эту запись в примере файла schema.xml, который поставляется с дистрибутивом Solr.

<!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->
<fieldtype name="binary" class="solr.BinaryField"/>

Убедитесь, что поле, которое вы используете для хранения закодированного значения в индексе, использует binary fieldType и что вы используете строки в кодировке base64.

...