Мне нужно выполнять запросы с подстановочными знаками для чисел в CloudSearch. Делать это с текстовыми данными легко -> xy*, но это дает ошибку при выполнении того же запроса для числовых полей. Я использую lucene в качестве парсера запросов. Пожалуйста, предложите, можно ли это сделать с помощью любых других парсеров.
Поиск по шаблону в CloudSearch
Ответы (2)
Поиск с подстановочными знаками не поддерживается для числовых полей. Из вашего вопроса неясно, какого результата вы ожидаете.
Если вы ожидаете совпадения диапазона чисел, вы можете использовать запрос диапазона:
numericField:[330 TO 339]
будет соответствовать документам, где numericField
больше или равно 330 и меньше или равно 339.
Если, с другой стороны, вы ожидаете найти все документы, где первая и вторая цифры равны, например, тройкам, вам потребуется еще одно текстовое поле, содержащее строковое представление числа. Вы бы искали по нему так:
numericFieldAsText:33*
Это будет соответствовать 33
, 331
, 333
, 330001
и т. д.
Вы можете использовать запрос фильтра как (and (prefix field=field_name 'xy'))
, если это структурированный запрос. но если это простой запрос, вы можете напрямую использовать xy* в поиске.