Компас, возвращающий 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;

Я не думаю, что # особенный персонаж, поэтому я удивлен, что это не работает для вас. Вы можете попытаться убежать от персонажа, используя \#,

Другой вариант может заключаться в том, чтобы заключить термин в кавычки

Удачи

Другие вопросы по тегам