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 можно определить несколько аргументов:
Запуск тестов
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:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )