如何在GraphDB全文搜索中创建自定义AnalyzerFactory?

时间:2017-04-20 10:33:33

标签: java lucene sparql graphdb

(免费使用GraphDB 8.1)。 http://graphdb.ontotext.com/documentation/free/full-text-search.html表示我可以通过实现接口luc:analyzer,使用com.ontotext.trree.plugin.lucene.AnalyzerFactory参数为GraphDB全文搜索启用自定义AnalyzerFactory。但是我无法在任何地方找到这个界面。它不在jar graphdb-free-runtime-8.1.0.jar中。

我检查了http://ontotext.com/products/graphdb/editions/#feature-comparison-table处的功能矩阵,看来这个功能'“Connectors Lucene”可用于免费版的GraphDB。

com.ontotext.trree.plugin.lucene.AnalyzerFactory接口位于哪个jar中?我需要在项目中导入什么才能实现此界面?

GraphDB中是否包含预先存在的AnalyzerFactories以使用Lucene其他分析仪? (我对使用FrenchAnalyzer很感兴趣。)

谢谢!

1 个答案:

答案 0 :(得分:1)

GraphDB提供两种不同的基于Lucene的插件。

我鼓励您使用Lucene连接器,除非您没有针对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"
  }
  ''' .
  }

然后从Import&gt;手动添加一些样本测试数据。文字区域:

<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/路径中。