Titan - 如何使用'Lucene'搜索后端

时间:2016-07-14 18:40:07

标签: titan

我正在尝试使用Titan的lucene搜索后端。我将index.search.backend属性设置为lucene

TitanFactory.Builder config = TitanFactory.build();
config.set("storage.backend", "hbase");
config.set("storage.hostname", "node1");
config.set("storage.hbase.table", "titan");
config.set("index.search.backend", "lucene");
config.set("index.search.directory", "/tmp/foo");

TitanGraph graph = config.open();
GraphOfTheGodsFactory.load(graph);
graph.getVertices().forEach(v -> System.out.println(v.toString()));

当然,这不起作用,因为此设置属于GLOBAL_OFFLINE种类。日志让我意识到这一点。 Titan忽略了我的'lucene'设置,然后尝试使用Elasticsearch作为搜索后端。

WARN com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration  
- Local setting index.search.backend=lucene (Type: GLOBAL_OFFLINE) 
is overridden by globally managed value (elasticsearch).  Use 
the ManagementSystem interface instead of the local configuration to control 
this setting.

经过一些阅读,我明白我需要使用管理系统来设置index.search.backend。我需要一些类似于以下内容的代码。

graph.getManagementSystem().set("index.search.backend", "lucene");
graph.getManagementSystem().set("index.search.directory", "/tmp/foo");
graph.getManagementSystem().commit();

我对如何在上面的原始示例代码中集成它感到困惑。由于这是GLOBAL_OFFLINE设置,因此我无法在打开的图表上进行设置。与此同时,除非我先打开图表,否则我不知道如何获取图表。如何正确设置搜索后端?

1 个答案:

答案 0 :(得分:0)

没有inmemory搜索后端。 supported search backends是Lucene,Solr和Elasticsearch。

对于小型单机搜索后端,

Lucene是一个不错的选择。您需要设置2个属性才能执行此操作,index.search.backendindex.search.directory

index.search.backend=lucene
index.search.directory=/path/to/titansearchindexdir

正如您所指出的,搜索后端是GLOBAL_OFFLINE,因此您应该在最初创建图表之前对其进行配置。由于您已在HBase中创建了titan表,因此请先禁用并删除titan表,或将图表配置设置为指向新的storage.hbase.table