Я начал работать над компонентом поиска резюме (документа) на основе движка lucene.net.Он отлично работает и получает документ и оценивает его на основе
. Идея, лежащая в основе VSM, заключается в том, что больше раз в запросе появляется термин запроса относительно количества раз, когда термин появляется вчем больше документов в коллекции, тем более релевантен этот документ для запроса.
Практическая функция подсчета Lucene получена из приведенного ниже.
score(q,d)=coord(q,d)·queryNorm(q)· ∑( tf(t in d) ·idf(t)2 · t.getBoost() · norm(t,d) )
t in q
в этом
- tf (t в d) соответствует частоте термина, определяемой как число раз, когда термин t появляется в текущем набранном документе d.Документы, которые имеют большее количество вхождений данного термина, получают более высокий балл
- idf (t) означает Обратную частоту документов.Это значение соответствует обратному к docFreq (количеству документов, в которых появляется термин t).Это означает, что более редкие термины дают более высокий вклад в общий балл.
Это действительно очень здорово в большинстве ситуаций, но из-за вычисления полевой нормы результат не точен
fieldnorm aka значение «норма длины поля» представляет длину этого поля в этом документе (поэтому более короткие поля автоматически увеличиваются).
Из-за этого мы не получили точных результатов.Например, я получил 10000 документов, в которых 3000 документов получили ключевые слова java и oracle.И количество раз, которое кажется, варьируется в каждом документе.
- Предположим, что документ A получил 10 java 20 оракулов среди 1000 слов, а документ B получил 2 java 2 oracle среди 50 слов
- еслия ищу запрос "java and oracle", lucene возвращает документ B с высокой оценкой из-за нормализации длины.
В связи с характером бизнеса нам нужно получить документы, которые получили больше поискового ключевого словавхождение должно быть на первом месте, нам не важна длина документа.
Из-за этого в результате был перемещен парень с большим резюме с большим количеством ключевых слов, и появилось несколько небольших резюме..
Чтобы избежать этого, мне нужно отключить нормализацию длины.Может ли кто-нибудь помочь мне с этим ??
Я приложил изображение результата Luke для вашей справки.
На этом изображении документ с java 50 раз и oracle 6 раз перемещен вниз на 11-е место.позиция.
![alt text](https://i.stack.imgur.com/tmVua.png)
Но этот документ с java 24 раза и oracle 5 раз является лучшим бомбардиром благодаря полевой норме.
![alt text](https://i.stack.imgur.com/TTjFF.png)
Надеюсь, я передал информацию ясно ... Если нет, пожалуйста, спросите меня, я дам больше информации