Lucene
Поддерживается только производитель
Компонент Lucene основан на проекте Apache Lucene. Apache Lucene -- это мощная высокопроизводительная полнофункциональная библиотека для текстового поиска, полностью написанная на Java. Подробнее о Lucene можно узнать по следующим ссылкам.
Компонент Lucene в Camel облегчает интеграцию и использование конечных точек Lucene в шаблонах и сценариях корпоративной интеграции. Компонент Lucene выполняет следующие функции:
-
создает индекс документов с возможностью поиска при отправке полезных данных в конечную точку Lucene
-
облегчает выполнение индексированного поиска в Camel
Пользователям Maven необходимо добавить следующую зависимость для pom.xmlэтого компонента:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-lucene</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>URI format
lucene:searcherName:insert[?options] lucene:searcherName:query[?options]
Configuring Options
Компоненты Camel настраиваются на двух отдельных уровнях:
-
уровень компонентов
-
уровень конечной точки
Configuring Component Options
На уровне компонентов задаются общие и общие конфигурации, которые затем наследуются конечными точками. Это самый высокий уровень конфигурации.
Например, компонент может иметь настройки безопасности, учетные данные для аутентификации, URL-адреса для сетевого подключения и т. д.
У некоторых компонентов всего несколько параметров, а у других -- много. Поскольку компоненты обычно имеют предустановленные значения по умолчанию, которые широко используются, зачастую вам может потребоваться настроить лишь несколько параметров компонента, а то и вовсе ни одного.
Вы можете настроить компоненты, используя:
-
Компонент DSL (opens in a new tab) .
-
в файле конфигурации (
application.propertiesфайлы*.yaml, и т.д.). -
непосредственно в коде Java.
Configuring Endpoint Options
Настройка конечных точек обычно занимает больше времени, поскольку у них есть множество параметров. Эти параметры помогают вам настроить функции конечной точки. Параметры также классифицируются по тому, используется ли конечная точка как потребитель ( от ), как производитель ( от ) или и то, и другое.
Конечные точки чаще всего настраиваются непосредственно в URI конечной точки в виде параметров пути и запроса . Вы также можете использовать Endpoint DSL (opens in a new tab) и DataFormat DSL (opens in a new tab) в качестве типобезопасного способа настройки конечных точек и форматов данных в Java.
Хорошей практикой при настройке параметров является использование заполнителей свойств (opens in a new tab) .
Заполнители свойств обеспечивают несколько преимуществ:
-
Они помогают предотвратить использование жестко запрограммированных URL-адресов, номеров портов, конфиденциальной информации и других настроек.
-
Они позволяют вынести конфигурацию за пределы кода.
-
Они помогают коду стать более гибким и пригодным для повторного использования.
В следующих двух разделах перечислены все параметры, сначала для компонента, а затем для конечной точки.
Component Options
Компонент Lucene поддерживает 7 опций, которые перечислены ниже.
analyzer (producer)
-
Анализатор создаёт потоки TokenStreams, анализирующие текст. Таким образом, он представляет собой политику извлечения индексных терминов из текста. Значением анализатора может быть любой класс, расширяющий абстрактный класс org.apache.lucene.analysis.Analyzer. Lucene также предлагает богатый набор готовых анализаторов.
-
По умолчанию:
-
Тип: Analyzer
indexDir (producer)
-
Каталог файловой системы, в котором создаются индексные файлы после анализа документа указанным анализатором.
-
По умолчанию:
-
Тип: File
lazyStartProducer (producer)
-
Тип: Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: boolean
maxHits (producer)
-
Целочисленное значение, ограничивающее набор результатов операции поиска.
-
По умолчанию:
-
Тип: int
srcDir (producer)
-
Необязательный каталог, содержащий файлы, которые будут использоваться для анализа и добавления в индекс при запуске производителя.
-
По умолчанию:
-
Тип: File
autowiredEnabled (advanced)
-
Тип: Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.
-
По умолчанию: true
-
Тип: boolean
config (advanced)
-
Использовать общую конфигурацию Lucene.
-
По умолчанию:
-
Тип: LuceneConfiguration
Endpoint Options
Конечная точка Lucene настраивается с использованием синтаксиса URI:
lucene:host:operation
Со следующими параметрами пути и запроса :
Path Parameters (2 parameters)
host (producer)
-
Обязательно URL-адрес сервера Lucene.
-
По умолчанию:
-
Тип: String
operation (producer)
-
Тип: Необходимая операция, например вставка или запрос.
Значения перечисления:
-
insert
-
query
-
-
По умолчанию:
-
Тип: LuceneOperation
Query Parameters (5 parameters)
analyzer (producer)
-
Анализатор создаёт потоки TokenStreams, анализирующие текст. Таким образом, он представляет собой политику извлечения индексных терминов из текста. Значением анализатора может быть любой класс, расширяющий абстрактный класс org.apache.lucene.analysis.Analyzer. Lucene также предлагает богатый набор готовых анализаторов.
-
По умолчанию:
-
Тип: Analyzer
indexDir (producer)
-
Тип: Каталог файловой системы, в котором создаются индексные файлы после анализа документа указанным анализатором.
-
По умолчанию:
-
Тип: File
maxHits (producer)
-
Целочисленное значение, ограничивающее набор результатов операции поиска.
-
По умолчанию:
-
Тип: int
srcDir (producer)
-
Тип: Необязательный каталог, содержащий файлы, которые будут использоваться для анализа и добавления в индекс при запуске производителя.
-
По умолчанию:
-
Тип: File
lazyStartProducer (producer (advanced))
-
Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: boolean
Message Headers
Компонент Lucene поддерживает 2 заголовка сообщения, которые перечислены ниже:
QUERY (producer)
Constant: HEADER_QUERY (opens in a new tab)
-
Запрос Lucene, выполняемый к индексу. Запрос может содержать подстановочные знаки и фразы.
-
По умолчанию:
-
Тип: String
RETURN_LUCENE_DOCS (producer)
Constant: HEADER_RETURN_LUCENE_DOCS (opens in a new tab)
-
Установите для этого заголовка значение true, чтобы включить фактическую документацию Lucene при возврате информации о попадании.
-
По умолчанию:
-
Тип: String
Usage
Lucene Producers
Этот компонент поддерживает 2 конечные точки производителя.
Вставка : производитель вставки создаёт индекс для поиска, анализируя тело входящих запросов и связывая его с токеном («контентом»). Запрос : производитель запроса выполняет поиск по заранее созданному индексу. Запрос использует индекс для поиска на основе оценки и релевантности. Запросы, отправляемые через входящий запрос, содержат имя свойства заголовка «QUERY». Значением свойства заголовка «QUERY» является запрос Lucene. Подробнее о создании запросов Lucene см. в разделе « Синтаксис классического парсера запросов». (opens in a new tab)
Lucene Processor
Существует процессор LuceneQueryProcessor, который позволяет выполнять запросы к Lucene без необходимости создания производителя.
Examples
Образцы использования Lucene.
Example 1: Creating a Lucene index
RouteBuilder builder = new RouteBuilder() {
public void configure() {
from("direct:start").
to("lucene:whitespaceQuotesIndex:insert?
analyzer=#whitespaceAnalyzer&indexDir=#whitespace&srcDir=#load_dir").
to("mock:result");
}
};Example 2: Loading properties into the JNDI registry in the Camel Context
CamelContext context = new DefaultCamelContext(createRegistry());
Registry registry = context.getRegistry();
registry.bind("whitespace", new File("./whitespaceIndexDir"));
registry.bind("load_dir", new File("src/test/resources/sources"));
registry.bind("whitespaceAnalyzer", new WhitespaceAnalyzer());Example 2: Performing searches using a Query Producer
RouteBuilder builder = new RouteBuilder() {
public void configure() {
from("direct:start").
setHeader(LuceneConstants.HEADER_QUERY, constant("Seinfeld")).
to("lucene:searchIndex:query?
analyzer=#whitespaceAnalyzer&indexDir=#whitespace&maxHits=20").
to("direct:next");
from("direct:next").process(new Processor() {
public void process(Exchange exchange) throws Exception {
Hits hits = exchange.getIn().getBody(Hits.class);
printResults(hits);
}
private void printResults(Hits hits) {
LOG.debug("Number of hits: " + hits.getNumberOfHits());
for (int i = 0; i < hits.getNumberOfHits(); i++) {
LOG.debug("Hit " + i + " Index Location:" + hits.getHit().get(i).getHitLocation());
LOG.debug("Hit " + i + " Score:" + hits.getHit().get(i).getScore());
LOG.debug("Hit " + i + " Data:" + hits.getHit().get(i).getData());
}
}
}).to("mock:searchResult");
}
};Example 3: Performing searches using a Query Processor
RouteBuilder builder = new RouteBuilder() {
public void configure() {
try {
from("direct:start").
setHeader(LuceneConstants.HEADER_QUERY, constant("Rodney Dangerfield")).
process(new LuceneQueryProcessor("target/stdindexDir", analyzer, null, 20)).
to("direct:next");
} catch (Exception e) {
e.printStackTrace();
}
from("direct:next").process(new Processor() {
public void process(Exchange exchange) throws Exception {
Hits hits = exchange.getIn().getBody(Hits.class);
printResults(hits);
}
private void printResults(Hits hits) {
LOG.debug("Number of hits: " + hits.getNumberOfHits());
for (int i = 0; i < hits.getNumberOfHits(); i++) {
LOG.debug("Hit " + i + " Index Location:" + hits.getHit().get(i).getHitLocation());
LOG.debug("Hit " + i + " Score:" + hits.getHit().get(i).getScore());
LOG.debug("Hit " + i + " Data:" + hits.getHit().get(i).getData());
}
}
}).to("mock:searchResult");
}
};Spring Boot Auto-Configuration
При использовании Lucene с Spring Boot обязательно используйте следующую зависимость Maven для поддержки автоматической настройки:
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-lucene-starter</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>Компонент поддерживает 8 опций, которые перечислены ниже.
camel.component.lucene.analyzer
-
Тип: Анализатор создаёт потоки TokenStreams, которые анализируют текст. Таким образом, он представляет собой политику извлечения индексных терминов из текста. Значением анализатора может быть любой класс, расширяющий абстрактный класс org.apache.lucene.analysis.Analyzer. Lucene также предлагает богатый набор готовых анализаторов. Опцией является тип org.apache.lucene.analysis.Analyzer.
-
По умолчанию:
-
Тип: Analyzer
camel.component.lucene.autowired-enabled
-
Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.
-
По умолчанию: true
-
Тип: Boolean
camel.component.lucene.config
-
Для использования общей конфигурации Lucene. Этот параметр имеет тип org.apache.camel.component.lucene.LuceneConfiguration.
-
По умолчанию:
-
Тип: LuceneConfiguration
camel.component.lucene.enabled
-
Включить ли автоматическую настройку компонента Lucene. По умолчанию эта опция включена.
-
По умолчанию:
-
Тип: Boolean
camel.component.lucene.index-dir
-
Тип: Каталог файловой системы, в котором создаются индексные файлы после анализа документа указанным анализатором.
-
По умолчанию:
-
Тип: File
camel.component.lucene.lazy-start-producer
-
Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: Boolean
camel.component.lucene.max-hits
-
Целочисленное значение, ограничивающее набор результатов операции поиска.
-
По умолчанию:
-
Тип: Integer
camel.component.lucene.src-dir
-
Необязательный каталог, содержащий файлы, которые будут использоваться для анализа и добавления в индекс при запуске производителя.
-
По умолчанию:
-
Тип: File