Получить начальные и конечные смещения для всех матчей с Lucene 8.4 - PullRequest
0 голосов
/ 20 марта 2020

Я использую Lucene 8.4 в Java и пытаюсь получить начальное и конечное смещение совпадений входного запроса. Мой код выглядит следующим образом:

QueryBuilder bldr = new QueryBuilder(new StandardAnalyzer());

Query q1 = bldr.createPhraseQuery("sentences", query);
BooleanQuery.Builder chainQryBldr = new BooleanQuery.Builder();
chainQryBldr.add(q1, BooleanClause.Occur.MUST);

BooleanQuery finalQry = chainQryBldr.build();

TopDocs result;

try {   
    searcher = searchManager.acquire();

    result = searcher.search(finalQry, 10000);

    for (int i = 0; i < result.scoreDocs.length; i++) {
        ScoreDoc scoreDoc = result.scoreDocs[i];

        Document doc = searcher.doc(scoreDoc.doc);

        // Ideally I would want something like:
        // for (Match m : doc.getMatches()) {
        // ... use m.getStartOffset() and  m.getEndOffset() ...
        // }

        results.add(parseDoc(doc));
    }
} catch (IOException e) {

Я искал везде, но со всеми различными версиями Lucene я действительно не могу найти то, что работает. Как я указывал в коде, в идеале я хотел бы получить доступ к начальному и конечному смещению (char) всех совпадений текущего документа, но если это невозможно, то (например, я повторяю все совпадения независимо от текущего документа), что может быть в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...