package gw.solr.mapper.query uses org.apache.commons.lang.CharUtils uses java.lang.Character /** * Simple search value encoder that converts "special" characters to * whitespace and then compresses each whitespace block into a single * 'space. * * Use for encoding term queries, such as roles or phone numbers. * For edismax subqueries, use PhraseEncoder. */ @ReadOnly class DefaultEncoder extends AbstractEncoder { /** * Encode unsupported characters as ' ' (whitespace) for term queries. */ public final static var ENCODED_CHAR : char = ' ' override function isSearchable(c : char) : boolean { return Character.isLetterOrDigit(c) || // Ascii symbols except double quotes (CharUtils.isAsciiPrintable(c) && !Character.isWhitespace(c) && c != DOUBLE_QUOTE) || Character.isLowSurrogate(c) || Character.isHighSurrogate(c) } override property get EncodedChar() : char { return ENCODED_CHAR } override function needsEscape(c : char) : boolean { return LUCENE_SPECIAL_CHARS.contains(c) } }