Компас, возвращающий 0 строк с "#" (хэш-символ) в поисковом запросе
Я использую компас на основе индексации в моем проекте. Теперь в одном из сценариев у меня есть значения полей что-то вроде 'dummy#value'. Поэтому, если я пытаюсь выполнить поиск по любому значению, которое содержит символ "#", оно возвращает 0 строк.
Например,
DummyTable
id field_name
----------------
1 dummy#value
2 otherVal1
3 otherVal2
запрос
+(+alias:DummyTable +field_name:dummy#value*) +(alias:DummyTable)
возвращая 0 строк, тогда как
+(+alias:DummyTable +field_name:dummy*) +(alias:DummyTable)
возвращение 1 строки..
2 ответа
Решение
Я должен был аннотировать декларацию поля как
NOT_ANALYZED: (индексировать значение свойства без использования анализатора, чтобы его можно было искать)
@SearchableProperty(index=Index.NOT_ANALYZED)
private String field_name;
Я не думаю, что # особенный персонаж, поэтому я удивлен, что это не работает для вас. Вы можете попытаться убежать от персонажа, используя \#
,
Другой вариант может заключаться в том, чтобы заключить термин в кавычки
Удачи