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

OSCHINA-MIRROR/bluejoe-solr-sql

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

solr-sql

solr-sql предоставляет интерфейсы SQL для solr cloud (http://lucene.apache.org/solr/), с помощью которых разработчики могут работать с solr cloud через протоколы JDBC.

В то же время solr-sql является адаптером Apache Calcite для solr.

О проекте

Проект написан на Scala, который генерирует байт-коды JVM, подобные Java.

Этот проект размещён на http://github.com/bluejoe2008/solr-sql.

Поэтому, если вы разработчик Java, не стесняйтесь выбирать solr-sql, потому что его легко использовать в коде Java. Также тестовые случаи написаны на Java (см. https://github.com/bluejoe2008/solr-sql/blob/master/src/java/test/SolrSqlQueryTest.java).

Если вас интересуют исходные коды, возможно, вам потребуется установить ScalaIDE или плагины Scala для Eclipse.

Для управления зависимостями библиотек solr-sql использует Maven, это обычный проект Maven.

Импорт solr-sql

Используйте Maven для импорта solr-sql:

<dependency>
  <groupId>com.github.bluejoe2008</groupId>
  <artifactId>solr-sql</artifactId>
  <version>0.9.1</version>
</dependency>

Пример кода клиента JDBC

Пример кода:

Properties info = new Properties();
info.setProperty("lex", "JAVA");
Connection connection = DriverManager.getConnection(
        "jdbc:calcite:model=src/java/test/model.json", info);

Statement statement = connection.createStatement();
String sql = "select * from docs where not (age>35 and name='bluejoe')";
ResultSet resultSet = statement.executeQuery(sql);

Это иллюстрирует, как подключиться к «базе данных» solr в стиле клиента JDBC, схема «базы данных» определена в файле src/java/test/model.json.

Определение таблицы

Файл src/java/test/model.json показывает пример определения схемы, как показано ниже:

{ version: '1.0', defaultSchema: 'solr', schemas: [ { name: 'solr', tables: [ { name: 'docs', type: 'custom', factory: 'org.apache.calcite.adapter.solr.SolrTableFactory', operand: { solrServerURL: 'http://bluejoe1:8983/solr/collection1', solrCollection: 'collection1',
//solrZkHosts: 'bluejoe1:9983', columns:'id integer, name char, age integer', columnMapping: 'name->name_s, age->age_i' } } ] } ] }

Определяет пользовательскую таблицу с именем «docs», в поле operand можно определить несколько аргументов:

  • solrServerURL — URL-адрес сервера solr, например, 'http://bluejoe1:8983/solr/collection1';
  • solrCollection — имя коллекции, например, «collection1»;
  • solrZkHosts — хосты zookeeper, используемые облаком solr, например, 'bluejoe1:9983';
  • columns — определения столбцов, разделённые запятыми, каждый столбец описывается в формате 'имя_столбца тип_столбца_имя', например, 'id integer, name char, age integer';
  • columnMapping — сопоставления столбцов, разделенные запятыми, каждое сопоставление столбцов описывается в формате 'имя_столбца->имя_поля_в_документе_solr', например, 'name->name_s, age->age_i';
  • pageSize — solr-sql не извлекает все результаты при запросе, например, он извлекает только первые 50 результатов, если механизм SQL запрашивает больше, он извлекает следующие 50 результатов. pageSize определяет размер каждого запроса, значение по умолчанию — 50.

Запуск тестов

https://github.com/bluejoe2008/solr-sql/blob/master/src/java/test/SolrSqlQueryTest.java показывает, как подключиться к источнику JDBC solr.

https://github.com/bluejoe2008/solr-sql/blob/master/src/java/test/SqlTranslatorTest.java проверяет правильность перевода фильтров SQL в фильтры Solr, например:

Assert.assertEquals("age_i:{20 TO *}", trans("select * from docs where SqlFilter2SolrFilterTranslator

SqlFilter2SolrFilterTranslator переводит SQL-фильтр в Solr-фильтр. SQL-фильтр представлен объектом Calcite RexNode, а Solr-фильтр — объектом SolrFilter. В этом проекте определено несколько SolrFilters:

  • AndSolrFilter;
  • NotSolrFilter;
  • OrSolrFilter;
  • GtSolrFilter;
  • NotNullSolrFilter;
  • IsNullSolrFilter;
  • EqualsSolrFilter;
  • LikeSolrFilter;
  • NotEqualsSolrFilter;
  • GeSolrFilter;
  • LeSolrFilter;
  • LtSolrFilter;
  • UnrecognizedSolrFilter.

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

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

Введение

Относительно SQL-движка запросов для Solr. Развернуть Свернуть
BSD-3-Clause
Отмена

Обновления

Пока нет обновлений

Участники

все

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

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