3

modeshape で全文検索を実行しようとしています。ルセン指数に基づくランキング結果に特に興味があります。ここに私のリポジトリ構成があります

 "indexProviders": {
        "lucene": {
            "classname": "lucene",
            "directory": "${user.home}/repository/indexes"
        }
    },
    "indexes": {
        "textFromFiles": {
            "kind": "text",
            "provider": "lucene",
            "nodeType": "nt:resource",
            "columns": "jcr:data(BINARY)"
        }
    },

指定した場所に lucene インデックスが作成されていることに気付きました。検索語の出現回数を変えた 10 ~ 15 個のファイルをリポジトリに追加し、いくつかの単語を使用して検索してみました。以下に示すようにスコアを印刷しています

        QueryManager querymgr = session.getWorkspace().getQueryManager();
        String query = "SELECT file.* FROM [nt:hierarchyNode] as file LEFT JOIN [nt:resource] as data ON ISCHILDNODE(data , file) WHERE "
                + "contains(data.*, '" + searchText + "')";

        Query createQuery = querymgr.createQuery(query, Query.JCR_SQL2);
        QueryResult result = createQuery.execute();     

        RowIterator rows = result.getRows();
        while(rows.hasNext()){
            Row nextRow = rows.nextRow();
         LOGGER.info("score : {}", nextRow.getScore());
        }

ただし、ここではスコアはすべての結果で常に 1.0 です。結合せずに簡単なクエリも試してみました...

SELECT data.* FROM [nt:resource] as data WHERE contains(data.*, 'searchterm') 

しかし運がない

4

0 に答える 0