2010-09-21 8 views
5

Rozpocząłem pracę nad komponentem resume (dokument) opartym na silniku lucene.net. Działa świetnie, i to pobiera dokument i słabo na podstawieOblicz wynik tylko na podstawie dokumentów, które mają więcej czasu w lucene

Ideą VSM jest więcej razy termin zapytania pojawia się w dokumentu w stosunku do liczby czasach termin ten pojawia się w wszystkie dokumenty w kolekcji, tym bardziej odpowiedni jest ten dokument dla zapytania .

Funkcja praktycznego oceniania Lucene pochodzi z poniższego.

score(q,d)=coord(q,d)·queryNorm(q)· ∑(tf(t in d) ·idf(t)2 · t.getBoost() · norm(t,d)) 
            t in q 

w tym

  • tf t (w D) skorelowana z częstotliwością do którego się odnosi, określona jako liczba razy termin t pojawia się obecnie trafia Dokument D. Dokumenty, które mają więcej wystąpień danego terminu, otrzymują wyższą ocenę:
  • idf (t) oznacza Inverse Document Frequency. Ta wartość koreluje z odwrotnością docFreq (liczba dokumentów, w których pojawia się termin t). Oznacza to, że terminy rzadsze dają większy wkład w wynik całkowity.

To jest bardzo duże rzeczywiście w większości sytuacji, ale ze względu na obliczenia fieldnorm wynik nie jest dokładny

„długość pola norma” wartość fieldnorm aka reprezentuje długość tej dziedzinie w tym dokumencie (więc krótsze pola są automatycznie zwiększane).

Z tego powodu nie uzyskaliśmy dokładnych wyników. Powiedzmy, że mam na przykład 10000 dokumentów, w których 3000 dokumentów otrzymało słowo kluczowe Java i Oracle. I nie razy pojawia się różnić w każdym dokumencie.

  • zakładać doc dostał 10 Java 20 wyrocznię wśród 1000 słów i doc B dostaliśmy 2 Java 2 wyrocznię wśród 50 słów
  • jeśli szukam dla zapytania "Java i Oracle", Lucene wraca doc B z wysoką punktacją ze względu na normalizację długości.

Ze względu na charakter działalności, w której musimy odzyskać dokumenty, w których więcej wyszukiwań wystąpienie słowa kluczowego powinno być na pierwszym miejscu, tak naprawdę nie zależy nam na długości dokumentu.

Z tego powodu Guy z dużym resume z dużą ilością słów kluczowych został przeniesiony poniżej w wyniku i pojawiły się małe życiorysy.

Aby tego uniknąć, należy wyłączyć normalizację długości. Czy ktoś może mi w tym pomóc?

Dołączyłem obrazek wyniku Luke'a w celach informacyjnych.

Na tym obrazku dokument z java 50 razy i oracle 6 razy przeniesiony na 11 pozycję.

alt text

Ale ten dokument z Java i Oracle 24 razy 5 razy jest najlepszym strzelcem powodu fieldnorm.

alt text

nadzieję, że informacje przekazywane w jasny ... Jeśli nie proszę zapytać mnie, ll daję Więcej informacji

Odpowiedz

7

Można wyłączyć długości normalizacja z Field.setOmitNorms(true)

+0

dzięki Shashikant, że ja spróbuję .. :) – RameshVel

+0

Shasi, działa zgodnie z oczekiwaniami ... uratowałeś mój dzień ...... – RameshVel

+0

długie pytanie na tak krótką odpowiedź;) – serg10

Powiązane problemy