При выполнении поиска, например:
field_name:#
field_name:"#"
field_name:"\#"
там, где есть запись со значением ровно "#", Solr возвращает 0 строк.
Обходной путь, который мы должны использовать, состоит в том, чтобы использовать запрос диапазона на
поле, такое как:
field_name:[# TO #]
и это возвращает правильные документы.
Подробности использования:
У нас есть поле, которое индексирует текстовое поле и вычисляет букву
группа ". Это сохраняет только первый значащий символ из значения
(число или буква), и если это число, то просто хранит "#", как мы
хотите, чтобы все пронумерованные элементы были сгруппированы вместе.
Я также знаю, что мы могли бы также исправить это, используя определенный номер
однако вместо хеша я хотел бы поднять это, чтобы увидеть
если есть более широкая проблема. Я перечислил некоторые конкретные детали ниже.
Определение поля:
<fieldType name="letterGrouping" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer>
<tokenizer class="solr.PatternTokenizerFactory" pattern="^([a-zA-Z0-9]).*" group="1"/>
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.TrimFilterFactory" />
<filter class="solr.PatternReplaceFilterFactory" pattern="([^a-z0-9])" replacement="" replace="all"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="([0-9])" replacement="#" replace="all" />
</analyzer>
</fieldType>
Информация о сервере:
Solr Specification Version: 3.2.0
Solr Implementation Version: 3.2.0 1129474 - rmuir - 2011-05-30 23:07:15
Lucene Specification Version: 3.2.0
Lucene Implementation Version: 3.2.0 1129474 - 2011-05-30 23:08:57