1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/istic-searchQueryEngine4Es

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать

A short and simple permissive license with conditions only requiring preservation of copyright and license notices. Licensed works, modifications, and larger works may be distributed under different terms and without source code.

Permissions
  • Commercial use
  • Modification
  • Distribution
  • Private use
Limitations
  • Liability
  • Warranty
Conditions
  • License and copyright notice
README.md 7.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 11:28 dfe24b6

Поиск по запросу для 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
}

TODO

  • Самоопределяемый макрос;
  • Добавить некоторые поддерживаемые макросом ключевые слова.

Установка

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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/istic-searchQueryEngine4Es.git
git@api.gitlife.ru:oschina-mirror/istic-searchQueryEngine4Es.git
oschina-mirror
istic-searchQueryEngine4Es
istic-searchQueryEngine4Es
master