我正在尝试使用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
设置,因此我无法在打开的图表上进行设置。与此同时,除非我先打开图表,否则我不知道如何获取图表。如何正确设置搜索后端?
答案 0 :(得分:0)
没有inmemory
搜索后端。 supported search backends是Lucene,Solr和Elasticsearch。
Lucene是一个不错的选择。您需要设置2个属性才能执行此操作,index.search.backend
和index.search.directory
:
index.search.backend=lucene
index.search.directory=/path/to/titansearchindexdir
正如您所指出的,搜索后端是GLOBAL_OFFLINE
,因此您应该在最初创建图表之前对其进行配置。由于您已在HBase中创建了titan
表,因此请先禁用并删除titan
表,或将图表配置设置为指向新的storage.hbase.table
。