Я использую Lucene 7.6.0, и я проиндексировал серию документов с FeatureField
, названным «функциями», в которых хранятся независимые от запроса доказательства (например, «indegree», «pagerank»).Если я не ошибаюсь, теория заключается в том, что они хранятся в виде вектора терминов, где «indegree» и «pagerank» хранятся в виде терминов, а их значения хранятся в виде соответствующих частот терминов.
I 'Мы проверили некоторые запросы, в которых я комбинировал BM25 и каждую отдельную функцию, а некоторые возвращали другое ранжирование по сравнению с одним BM25, но некоторые другие, похоже, не дали результата.Это может быть просто совпадением, и это хорошо, но я бы хотел проверить, правильно ли проиндексированы значения.Как мне это сделать?
Я пытался использовать Luke для проверки индекса, но с полем «features» не связан вектор терминов.Активными флагами для «функций» являются только «Idf», но я, честно говоря, не могу найти способ получить доступ к частотам для каждого документа.Лучшее, что я смог сделать, чтобы проверить, имеет ли поле какое-либо значение, было что-то вроде:
IndexReader reader = DirectoryReader.open(
FSDirectory.open(Paths.get("/tmp/lucene-index")));
reader.totalTermFreq(new Term("features", "indegree"));
Это напечатало число 33344, которое не соответствует индексируемому мной значению (один документс точностью до 10), однако я подозреваю, что это может быть каким-то образом кодифицировано.
Я знаю, что этот API все еще является экспериментальным, но мне было интересно, если кто-нибудь знал, будет ли возможно получить значения функций, либо для каждого документаили как-то глобально (возможно, анонимный вектор, без ссылки на соответствующие документы).