java - Neo4j节点索引: how to change Lucene default similarity?

标签 java lucene neo4j similarity

我正在使用 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);

如何将用于按分数排序的相似度实现更改为 MySimilarity 类(它扩展了 DefaultSimilarity 并覆盖了它的一些方法)?报告的查询始终使用 DefaultSimilarity,并且我无法找到任何 Hook 来设置查询期间激活的搜索器使用的相似性。

最佳答案

在查询期间不使用所提供的相似性这一事实是一个错误,应该修复。创建https://github.com/neo4j/neo4j/issues/375来追踪它。

关于java - Neo4j节点索引: how to change Lucene default similarity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13897686/

相关文章:

java - 日期格式从字符串中的日期到日期

java - 'IDENTIFIER' 规则也使用 ANTLR Lexer 语法中的关键字

php - 如何提高 Zend Lucene 的性能?

java - 如何在neo4j v2.0中使用neo4j核心遍历算法遍历图

JavaFX 动画恢复到原始状态

JavaFX:使用注释创建的构造函数

json - 从ElasticSearch中的结果文档中排除字段

lucene - Solr管理界面分析结果与solr搜索结果不匹配

nosql - Neo4j(或其他一些图形数据库)可以处理关系之间的关系吗?

java - 所有节点上的密码索引公共(public)属性