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

OSCHINA-MIRROR/Myzhang-luceneplus

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

lucenex

Упрощение работы с Lucene, чтобы вы могли сосредоточиться на реализации бизнес-логики!

Документация

Описание: https://gitee.com/Myzhang/luceneplus/blob/master/README.md

Javadoc: https://apidoc.gitee.com/Myzhang/luceneplus

Примеры: https://gitee.com/Myzhang/luceneplus/tree/master/src/test/java/com/ld/lucenex/demo

Особенности

  • Нативное использование Lucene
  • Поддержка нескольких источников данных
  • Автоматическое создание и очистка источников данных
  • По умолчанию используется близкая к реальному времени индексация
  • Класс MyDocument поддерживает автоматическую конвертацию в map, json, obj
  • Поддержка автоматического выделения ключевых слов
  • Унифицированный подход к сервисному интерфейсу
  • Объявление полей через аннотации

Начало работы

Создание источника данных Lucene

new LuceneX(new LuceneXConfig() {
    @Override
    public void configLuceneX(BaseConfig me) {
        me.add("d:/", "test", Empty.class);
    }
});

Определение сущностей

import com.ld.lucenex.field.FieldKey;
import com.ld.lucenex.field.LDType;

public class Empty {

    @FieldKey(type = LDType.IntPoint)
    private int id;
    @FieldKey(type = LDType.StringField)
    private String name;
    @FieldKey(type = LDType.TextField, highlight = true)
    private String text;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
``````java
        List<Empty> empties = new ArrayList<>(10);
        for (int i = 0; i < 10; i++) {
            Empty empty = new Empty();
            empty.setId(i);
            empty.setName("Новости");
            empty.setText("29 августа 2019 года в Шанхае состоялся Всемирный конгресс искусственного интеллекта. Темой конгресса стало «Умное соединение мира, бесконечные возможности». На конгрессе были представлены самые последние продукты и технологии AI из Китая и других стран. Кроме того, стенды с самопроизводимыми чипами AI таких компаний как Huawei, Cambricon и YITU привлекли большое внимание посетителей. Microsoft представила систему автоматического распознавания блюд, которая может определить стоимость блюда, поместив его в зону сканирования. Более того, система способна предоставлять анализ состава блюда, включая количество калорий, жира, углеводов и белка.");
            empties.add(empty);
        }
        ServiceImpl<Empty> basisService = ServiceFactory.getService(ServiceImpl.class);
        basisService.addObjects(empties);

Поиск индекса

        ServiceImpl<Empty> basisService = ServiceFactory.getService(ServiceImpl.class);
        Empty searchOne = basisService.searchOne(new TermQuery(new Term("name", "поиск")));
```### Условия выделения текста
- Поле должно иметь метку `highlight = true`, а также тип `LDType.TextField`.
```java
    @FieldKey(type = LDType.TextField, highlight = true)
    private String text;
  • Обязательно использовать метод searchList с возвращаемым типом <T>.

Условия реального времени индексации

  • Обязательно вызывать встроенные методы добавления/обновления/удаления из ServiceImpl.

Как создать пользовательский интерфейс запроса сервиса

import com.ld.lucenex.service.ServiceImpl;

public class DemoService<T> extends ServiceImpl<T> {
    public DemoService(String sourceKey) {
        super(sourceKey);
    }
}

Как интегрировать с другими web/не-web фреймворками

  • Достаточно создать источник данных Lucene при запуске проекта.

Журнал обновлений

v2.2

  • Изменены три приватных метода в BasisService на публичные.
  • Удалён старый зависимый модуль из pom.xml.

v2.1

  • Устранена рекурсивная ошибка вызова интерфейса.

v2.0

  • Внесено множество изменений, несовместимых с предыдущими версияи.
  • Добавлено защитное закрытие, которое гарантирует целостность данных перед завершением JVM.
  • Введён класс IndexSource, представляющий каждый источник данных.
  • Оптимизирована унифицированная система управления ресурсами LuceneX.
  • Введён класс MyDocument для преобразования объекта в документ.
  • Введён класс ServiceImpl.
  • Введён класс ServiceFactory.
  • Обновлён Lucene до версии 8.2.0.

v1.4

  • Добавлен метод searchOneDoc.
  • Добавлен пример использования SimpleExample.### v1.3
  • Добавлена возможность добавления одного объекта в индекс.
  • Реализован синхронный режим реального времени индексации.

v1.2

  • Добавлены плагины для интеграции с jfinal, Spring Boot и Servlet.
  • Улучшен код.
  • Добавлены два полезных метода.
  • Удалены две зависимости.
  • Поддержка добавления JavaBean, Map и FastJSON.
  • Автоматическое выполнение операций подтверждения и закрытия данных для предотвращения потери данных.

v1.1

  • Добавлены подробные комментарии к документации.
  • Улучшен и оптимизирован код.
  • Исправлена ошибка в демонстрационной программе.

v1.0

  • Удалены зависимости от сторонних библиотек для анализа текста и ненужных JAR.
  • Используется cglib для создания сервиса через динамическое прокси.
  • Введен интерцептор.
  • Обновление по умолчанию выполняется асинхронно.

Сообщество

  • Номер группы QQ: 475349334

Установка

После загрузки используйте Maven для сборки jar файла.

mvn clean package -DskipTests

Комментарии ( 0 )

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

Введение

Исключите рутинные операции Lucene, чтобы сосредоточиться на реализации бизнес-логики! Развернуть Свернуть
Apache-2.0
Отмена

Обновления (2)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/Myzhang-luceneplus.git
git@api.gitlife.ru:oschina-mirror/Myzhang-luceneplus.git
oschina-mirror
Myzhang-luceneplus
Myzhang-luceneplus
master