0

私は、neo4j-lucene-index ライブラリによって提供されるサポートを通じて、Neo4j (1.9) と lucene コア 3.5 を使用しています。私のコードでは、次のような新しいノード インデックスを作成します。

    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 を使用しており、クエリ中にアクティブ化されたサーチャーが使用する類似性を設定するためのフックを見つけることができませんでした。

4

1 に答える 1

2

提供された類似性がクエリ中に使用されないという事実はバグであり、修正する必要があります。それを追跡するためにhttps://github.com/neo4j/neo4j/issues/375を作成しました。

于 2012-12-16T21:25:04.473 に答える