Как создать собственный AnalyzerFactory в полнотекстовом поиске GraphDB?
(Использование GraphDB 8.1 бесплатно). http://graphdb.ontotext.com/documentation/free/full-text-search.html говорит, что я могу включить пользовательский AnalyzerFactory для полнотекстового поиска GraphDB, используя luc:analyzer
param, реализуя интерфейс com.ontotext.trree.plugin.lucene.AnalyzerFactory
, Однако я нигде не могу найти этот интерфейс. Это не в jar graphdb-free-runtime-8.1.0.jar.
Я проверил матрицу функций по адресу http://ontotext.com/products/graphdb/editions/ и, похоже, эта функция "Соединители Lucene" доступна для бесплатной версии GraphDB.
В какой банке com.ontotext.trree.plugin.lucene.AnalyzerFactory
интерфейс расположен? что мне нужно импортировать в мой проект для реализации этого интерфейса?
Существуют ли уже существующие AnalyzerFactories, включенные в GraphDB для использования других анализаторов Lucene? (Я заинтересован в использовании FrenchAnalyzer).
Спасибо!
1 ответ
GraphDB предлагает два разных плагина на основе Lucene.
- Плагин Lucene FTS индексирует молекулы RDF, и правильная ссылка на документацию: http://graphdb.ontotext.com/documentation/free/full-text-search.html
- Lucene Connector выполняет онлайн-синхронизацию между моделями документов RDF и Lucene, используя последовательности конфигураций, таких как "subject propertyPath" object to id|fild value. Правильная ссылка на документацию: http://graphdb.ontotext.com/documentation/free/lucene-graphdb-connector.html
Я призываю вас использовать Lucene Connector, если у вас нет особого случая для молекул RDF. Вот простой пример, как настроить соединитель с французским анализатором и проиндексировать все значения для rdfs:label
предикат для ресурсов типа urn:MyClass
, Выберите репозиторий и в представлении запроса SPARQL выполните:
PREFIX :<http://www.ontotext.com/connectors/lucene#>
PREFIX inst:<http://www.ontotext.com/connectors/lucene/instance#>
INSERT DATA {
inst:labelFR-copy :createConnector '''
{
"fields": [
{
"indexed": true,
"stored": true,
"analyzed": true,
"multivalued": true,
"fieldName": "label",
"propertyChain": [
"http://www.w3.org/2000/01/rdf-schema#label"
],
"facet": true
}
],
"types": [
"urn:MyClass"
],
"stripMarkup": false,
"analyzer": "org.apache.lucene.analysis.fr.FrenchAnalyzer"
}
''' .
}
Затем вручную добавьте некоторые тестовые данные из раздела "Импорт"> "Текст":
<urn:instance:test> <http://www.w3.org/2000/01/rdf-schema#label> "C'est une example".
<urn:instance:test> a <urn:MyClass>.
Как только вы совершите транзакцию, Connector обновит индекс Lucene. Теперь вы можете запускать поисковые запросы, такие как:
PREFIX : <http://www.ontotext.com/connectors/lucene#>
PREFIX inst: <http://www.ontotext.com/connectors/lucene/instance#>
SELECT ?entity ?snippetField ?snippetText {
?search a inst:labelFR ;
:query "label:*" ;
:entities ?entity .
?entity :snippets _:s .
_:s :snippetField ?snippetField ;
:snippetText ?snippetText .
}
Чтобы создать собственный анализатор, следуйте инструкциям в документации и расширьте org.apache.lucene.analysis.Analyzer
учебный класс. Поместите пользовательский анализатор JAR в lib/plugins/lucene-connector/
дорожка.