Поиск по запросу для Spring Data ElasticSearch
S-выражение парсер для Spring Data Elasticsearch.
Он разбирает s-выражение, подобное этому:
(and (between pub_time "2019-10-01" "1992-08-29") (like title "squid"))
И превращает его в boolQuery, подобный этому:
{
"from": 0,
"size": 1,
"query": {
"bool": {
"must": [{
"range": {
"pub_date": {
"from": "1992-08-29T00:00:00.000Z",
"to": "2019-10-01T00:00:00.000Z",
"include_lower": true,
"include_upper": true,
"boost": 1.0
}
}
},
{
"match": {
"title": {
"query": "squid",
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"boost": 1.0
}
}
}
],
"disable_coord": false,
"adjust_pure_negative": true,
"boost": 1.0
}
},
"version": true
}
git clone https://gitee.com/istic/searchQueryEngine4Es.git
cd searchQueryEngine4Es
mvn install
<dependency>
<groupId>cn.ac.istic.infrastructure</groupId>
<artifactId>searchQueryEngine4Es</artifactId>
<version>1.0</version>
</dependency>
Этот проект теперь протестирован с версией Spring Cloud как:
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Finchley.SR1</version>
</parent>
Добавьте AbstractEsQueryRepositoryBase.class
в свой базовый класс репозитория следующим образом:
@SpringBootApplication(scanBasePackages = "cn.ac.istic")
@EnableElasticsearchRepositories(basePackages = "cn.ac.istic",
repositoryBaseClass = AbstractEsQueryRepositoryBase.class)
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Затем вы можете создать свой репозиторий elasticsearch следующим образом:
public interface EsPolicyRepository extends EsQueryRepository<EsPolicy, Integer> {}
С автоматически подключённым свойством
@Autowired
private EspolicyRepository espolicyRepository;
Вы можете выполнить запрос и получить результат:
@Transactional
public Page<EsPolicy> fuzzySearch(String query, Pageable pageable) throws ThrowOutMessageAndDataException {
return esPolicyRepository.searchByQuery(query, pageable);
}
Следующие ключевые слова поддерживаются сейчас:
eq
, принимает 2 параметра, например [FieldName, Integer/Double/String]
, точное соответствие;like
, принимает 2 параметра, например [FieldName, String]
, поиск с подстановочными знаками;startWith
, принимает 2 параметра, например [FieldName, String]
, прямое соответствие;between
, принимает 3 параметра, например [FieldName, time-String, time-String]
, соответствие диапазону времени;after
, принимает 2 параметра, например [FieldName, time-String]
;before
, принимает 2 параметра, например [FieldName, String]
;and
, принимает несколько параметров, например [query...]
, все условия выполняются;or
, принимает несколько параметров, например [query...]
, выполняется более одного условия;not
, принимает несколько параметров, например [query...]
, ни одно из перечисленных условий не выполняется.Любые ключевые слова, которые вы хотели, могут быть поддержаны путём отправки запросов на вытягивание.
Лицензия MIT (MIT)
Авторское право (c) 2014
Настоящим предоставляется разрешение, бесплатное для любого лица, получающего копию этого программного обеспечения и связанных файлов документации («Программное обеспечение»), на работу с Программным обеспечением без ограничений, включая, помимо прочего, следующее: Права на использование, копирование, изменение, объединение, публикацию, распространение, передачу и/или продажу копий Программного обеспечения, а также разрешение лицам, которым предоставлено Программное обеспечение, делать это при соблюдении следующих условий:
Приведённое выше уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ДРУГИЕ ОБЯЗАТЕЛЬСТВА, ВОЗНИКАЮЩИЕ В РЕЗУЛЬТАТЕ ДЕЙСТВИЯ КОНТРАКТА, ДЕЛИКТА ИЛИ ИНЫМ ОБРАЗОМ, СВЯЗАННЫЕ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ИНЫМИ ОПЕРАЦИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )