Я хочу знать количество терминов для каждого документа в индексе lucene. Я искал в API и в Интернете без результата. Вы можете мне помочь?Как подсчитать количество терминов для каждого документа в индексе lucene?
ответ
Lucene построена так, чтобы отвечать на противоположный вопрос, то есть какие документы содержат данный термин. Поэтому, чтобы получить количество терминов для документа, вам нужно немного взломать.
Первый метод заключается в сохранении вектора условий для каждого поля, которое необходимо для получения количества терминов. Вектор слагаемых - это список терминов полей. Во время поиска вы можете получить его с помощью метода IndexReader getTermFreqVector (если они были сохранены во время индекса). Когда у вас есть это, вы получите длину вектора, и у вас есть количество терминов для этого поля.
Другой метод, если вы сохранили поля ваших документов, состоит в том, чтобы вернуть текст этих полей и подсчитать количество терминов, проанализировав его (разделить текст на слова).
Последнее, если для вас достаточно аппроксимации количества членов поля, и вы сохранили нормы в индексном времени, есть возможность вычислить обратную функцию той, которая используется для вычисления норм поля , Если вы внимательно посмотрите на метод lengthNorm класса сходства, вы заметите, что он использует количество терминов поля. Результат этого метода хранится в индексе с использованием метода encodeNorm. Вы можете в течение времени поиска восстановить нормы, используя метод IndexReader norms. С нормой в руке использует обратную математическую функцию той, которая используется в lengthNorm, чтобы вернуть число членов. Как я уже сказал, это всего лишь приближение, потому что, когда норма сохраняется, некоторая точность теряется, и вы не можете получить точно такое же число, как и то, что было сохранено.
Это на самом деле довольно сложно сделать в Lucene, если вы не храните векторы сроков в индексное время. Основная структура данных Lucene - это инвертированный индекс, который хранит термины как ключи и списки идентификаторов документов в качестве значений. Вот почему в API нет метода getNumTerms(), потому что фундаментальные структуры данных, которые использует Lucene, не поддерживают его.
При этом вы можете хранить векторы сроков в индексе, который вы можете найти по идентификатору документа во время поиска. Эти векторы являются по существу полным списком всех терминов в этом документе, которые вы можете подсчитать, чтобы получить свои # терминов.
См
http://lucene.apache.org/java/3_0_1/api/all/org/apache/lucene/document/Field.TermVector.html
В качестве альтернативы, вы можете рассчитывать все условия заранее и хранить его в качестве поля в индексе.
- 1. Lucene 4.10.2 высчитывает тс-IDF для всех терминов в индексе
- 2. Elasticsearch, как вернуть количество терминов для каждого документа
- 3. ElasticSearch. Общее количество уникальных терминов в индексе
- 4. Как подсчитать количество всех токенов в коллекции/индексе
- 5. Получите N терминов с верхними оценками TFIDF для каждого документа в Lucene (PyLucene)
- 6. Значение слова в индексе lucene
- 7. Как подсчитать количество терминов в таблице с помощью postgresql?
- 8. поиска в индексе Lucene
- 9. подсчитать количество записей для каждого возрастного диапазона
- 10. Повторное использование экземпляра документа и поля в индексе Lucene
- 11. Можно ли изменить рейтинг документа в индексе Lucene?
- 12. Поиск документа для нескольких терминов в VBA?
- 13. Как подсчитать количество делимых терминов без использования модуля оператора?
- 14. В R, как подсчитать количество CustomerId для каждого Deal_id?
- 15. Схема SOLR - сохранение поля документа Id. Максимальное количество документов в индексе Lucene
- 16. Уникальное количество агрегированных терминов
- 17. подсчитать количество вхождений каждого элемента в списке
- 18. Lucene - Запрос несколько терминов в области
- 19. Распечатать слова в индексе - Lucene
- 20. Lucene: срок перезарядки при индексе
- 21. Lucene - Как отказаться от числовых терминов в индексировании?
- 22. Lucene - «AND» наборы терминов «OR»
- 23. Поиск «И» в индексе lucene
- 24. LUCENE: поиск терминов, соответствующих регулярному выражению
- 25. Как я могу подсчитать количество магазинов для каждого адреса?
- 26. MySQL запросов для всех поисковых терминов в индексе
- 27. Как подсчитать количество повторений для каждого отдельного номера?
- 28. Как получить общее количество документов в lucene
- 29. Определение точных терминов, удовлетворяющих запросу Lucene
- 30. Подсчитать количество вхождений каждого адреса электронной почты
+1 сохранение количества терминов в индексном времени - хорошая идея –