我正在使用 Neo4j (1.9) 和 lucene core 3.5,通过 neo4j-lucene-index 库提供的支持。在我的代码中,我创建了一个新的节点索引,如下所示:
HashMap<String, String> stringMap = new HashMap<String, String>();
stringMap.put("type", "fulltext");
stringMap.put(IndexManager.PROVIDER, "lucene");
stringMap.put("to_lower_case", "false");
stringMap.put("similarity", MySimilarity.class.getName());
stringMap.put("analyzer", MyAnalyzer.class.getName());
simpleIndex = (LuceneIndex<Node>) template.getGraphDatabaseService()
.index().forNodes("simple-index", stringMap);
并通过多字段查询的方式查询节点索引:
Analyzer analyzer = new MyAnalyzer();
Query query = null;
try {
query = MultiFieldQueryParser.parse(Version.LUCENE_35,
queriesArray, fieldsArray, flagsArray, analyzer);
} catch (ParseException e) {
e.printStackTrace();
return;
}
if (query == null)
return;
QueryContext qc = new QueryContext(query).sortByScore();
IndexHits<Node> hits = simpleIndex.query(qc);
如何将用于按分数排序的 Similarity 实现更改为 MySimilarity 类(它扩展了 DefaultSimilarity 并覆盖了它的一些方法)?报告的查询始终使用 DefaultSimilarity 并且我无法找到任何挂钩来设置在我的查询期间激活的搜索器使用的相似性。