2010-04-05 9 views
1

im делает заявление с Lucene (im a noob with it) и im сталкивается с некоторыми проблемами. В моем приложении используется библиотека Lucene 2.4.0 с пользовательской реализацией подобъектов (импортируется банка)Lucene numDocs и doqFreq в пользовательском классе подобия

В моем приложении im вычисляется doqFreq и numDocs вручную (им добавляются значения всех индексов, а затем я вычисляю глобальное значение в чтобы использовать его для каждого запроса), и я хочу использовать эти значения в пользовательской реализации сходства, чтобы вычислить новую IDF.

Проблема в том, что я не знаю, как использовать (или отправлять) новые значения doqFreq и numDocs из моего приложения в эту новую реализацию similarty, поскольку я не хочу менять код lucene, кроме этого дополнительного класса.

Любые предложения или примеры? Я прочитал документацию, но я не в настоящее время, как это ПОДХОД: S

Благодаря

+0

Почему вы должны вычислять docFreq и numDocs вручную? Звучит как головная боль обслуживания. – bajafresh4life

+0

Сначала я вычисляю docFreq и numDocs для каждого сервера, а затем вычисляю глобальное значение, которое я отправляю всем серверам для вычисления idf. –

ответ

1

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

+0

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

+0

Ну, я решил эту проблему, изменив некоторые параметры в моей пользовательской реализации сходства (пара функций), и проблем пока нет. И как Yuval F говорит с этим aproach, я не получу результаты, которые я хочу. Спасибо –