Поиск в предложений и слов с спецсимволами в elasticsearch

405
23 января 2017, 18:15

Есть готовый индекс эластика использующийся для автодополнений. Разообрался как сделать фильтрацию по одному слову состоящему из букв, но не могу понять как сделать поиск так что бы можно было сделать поиск слов с пробелами. Например могу в поле names найти по запросу "Иванов" запись вида "Иванов Иван Иванович", но если я задам в поиск "Иванов Иван" то ничего не вернётся. Кусок кода:

SearchSourceBuilder search = SearchSourceBuilder.searchSource();
BoolQueryBuilder query = new BoolQueryBuilder();
String value = "Иванов Иван"; //строка которая ищется в индексе
query.must(QueryBuilders.regexpQuery("names",".*" + value.replaceAll("([+\\-!\\(\\){}\\[\\]^\"~*?:\\\\]|[&\\|]{2})", "\\\\$1") + ".*"));
search.query(query);
READ ALSO
Как сверстать такой элемент?

Как сверстать такой элемент?

Нужен вот такой треугольник, чтобы тянулся адаптивноПодскажите, как лучше его сверстать? Я пытался бордерами через before и after, но линии соприкосновения...

308
Как объединить 2 фильтра css

Как объединить 2 фильтра css

Как объединить эти 2 фильтра в 1? (Или как сделать 1 более насыщенным? - С 1 фильтром результат не устраивает)

416