2013-05-31 5 views
5

Ho trovato questo su Similarity classe public float idf(Term term, Searcher searcher) metodo javadoc di Lucene:Perché Lucene utilizza maxDoc al posto di numDocs per calcolare l'idf del termine?

noti che Searcher.maxDoc() viene usato al posto di IndexReader # numDocs() perché anche Searcher.docFreq (Term) viene utilizzato, e quando il quest'ultimo è impreciso, quindi è Searcher.maxDoc(), e nella stessa direzione. Nell'aggiunta , Searcher.maxDoc() è più efficiente da calcolare.

Questo non ha senso per me. Questo ha qualcosa a che fare con l'eliminazione dei documenti in un IndexReader?

risposta

5

Sì, esattamente giusto. Ogni volta che un documento viene cancellato (o aggiornato, poiché un aggiornamento in Lucene è solo un'eliminazione seguita da un add), il documento rimane nell'indice fino a quando tali segmenti non vengono uniti, spesso mediante un indice ottimizzato. Non verrà restituito dalle ricerche, essendo stato cancellato, ma i suoi termini avranno comunque un'influenza sul punteggio di idf.

Il LuceneFAQ ha alcune informazioni relative a questo, in particolare nell'ultimo paragrafo del this answer on deletion, e this addressing maxDoc specifically

+0

sembra che avete risposto un bel po 'delle mie domande. Grazie :-) – Denzel

Problemi correlati