2008-08-02 11 views
36

W Lucene, jeśli masz wiele indeksów, które obejmują tylko jedną partycję. Dlaczego to samo wyszukiwanie w różnych indeksach zwraca wyniki z różnymi wynikami? Wyniki z różnych serwerów dokładnie się zgadzają.Wyniki Lucene Wyniki

czyli gdybym szukał:

  • Nazwa - John Smith
  • DOB - 11/11/1934

podziału 0 zwróci wynik 0,345

Partycja 1 zwróci wynik 0,377

Obie odpowiadają dokładnie na nazwę i DOB.

Odpowiedz

18

The scoring zawiera Inverse Document Frequency (IDF). Jeśli termin "John Smith" jest w jednej partycji, 0, 100 razy i w partycji 1, jeden raz. Wynik wyszukiwania dla Johna Smitha byłby wyższy w partycji 1, ponieważ termin ten jest rzadszy.

Aby obejść ten problem, musiałbyś mieć indeks nad wszystkimi partycjami, lub byś musiał przesłonić IDF.

+1

Albo możesz zbudować multisearchera ze wszystkich indeksów. –

13

Ponieważ wynik jest określany na indeksie, jeśli nie jestem całkowicie mylony.

Jeśli mają różne indeksy (więcej/mniej lub inne dane, które zostały zindeksowane), wynik będzie się różnić:

http://lucene.apache.org/core/3_6_0/scoring.html

(Ostrzeżenie: Zawiera Math :-))

+2

zaktualizowany link: http://lucene.apache.org/java/2_4_0/scoring.html –