Как получить среднюю длину поля и длину документа в Lucene? - PullRequest
2 голосов
/ 18 мая 2011

Я пытаюсь внедрить систему подсчета BM25f в Lucene.Мне нужно внести несколько небольших изменений в исходную реализацию, указанную здесь для моих нужд, я заблудился в части, где он получает среднюю длину поля и длину документа ... Может кто-нибудь подсказать мне, какоткуда я это взял?

1 Ответ

1 голос
/ 23 мая 2011

Вы можете получить длину поля из TermVector экземпляров, связанных с полями документов, но это увеличит размер вашего индекса.Это, вероятно, путь, если вы не можете позволить себе больший индекс.Конечно, вам все равно нужно будет самостоятельно рассчитать среднее значение и сохранить его в другом месте (или, возможно, в специальном документе с известным внешним идентификатором, который вы просто обновляете при изменении статистики).

Если вы можете сохранитьданные вне индекса, одна вещь, которую вы можете сделать, это подсчитать токены, когда документы токенизированы, и сохранить их для усреднения.Если ваша коллекция документов статическая, просто скопируйте значения для каждого поля в файл и обработайте после индексации.Если индекс необходимо обновлять только с помощью дополнений, вы можете сохранить количество документов и среднюю длину для каждого поля и пересчитать среднее значение.Если документы будут удалены, и вам нужен точный подсчет, вам нужно будет повторно проанализировать удаляемый документ, чтобы узнать, сколько терминов содержит каждое поле, или получить длину из TermVector, если вы используете это.

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