Я пытаюсь обновить поиск условий документов в моем индексе Lucene. В настоящее время результаты поиска оцениваются по количеству раз, которое термин появляется в документе. То, что я хотел бы сделать, это оценка, если этот термин существует, а не количество раз, когда этот термин существует. Таким образом, документ с термином в нем однажды оценивает то же, что и документ с термином в нем 100 раз.Zend_Search_Lucene изменение частоты проблемы частоты
Я попытался расширить Zend_Search_Lucene_Search_Similarity своим собственным классом, но, честно говоря, я не уверен, что это работает правильно, поскольку оценки все еще довольно низкие.
class MySimilarity extends Zend_Search_Lucene_Search_Similarity{
//override the default frequency of searching
public function tf($freq){
return 1.0;
}
public function lengthNorm($fieldName, $numTerms) {
return 1.0/sqrt($numTerms);
}
public function queryNorm($sumOfSquaredWeights) {
return 1.0/sqrt($sumOfSquaredWeights);
}
public function sloppyFreq($distance) {
return 1.0;
}
public function idfFreq($docFreq, $numDocs) {
return log($numDocs/(float)($docFreq+1)) + 1.0;
}
public function coord($overlap, $maxOverlap) {
return $overlap/(float)$maxOverlap;
}
}
Теперь это построено из примеров, которые я нашел при поиске старых добрых Google. Однако единственное реальное изменение, которое я сделал, было связано с функцией tf().
Любая помощь с этим, и я буду очень благодарен, поскольку на данный момент это действительно испортило мои поиски.
Спасибо,
Грант
Что было бы лучшим способом получить абсолютный балл? Будет ли это idfFreq() ??? Спасибо, Грант –
Зачем нужен абсолютный бал? Предлагаю вам ознакомиться с http://lucene.apache.org/java/2_4_0/scoring.html и http://lucene.apache.org/java/2_4_0/api/org/apache/lucene/search/Similarity .html Java Lucene имеет удобную функцию explain(), которая описывает, почему документ получил свою оценку. Я не мог найти его в Zend, но вам может быть повезло больше. В любом случае, для поиска вам нужен только правильный порядок документов, поэтому относительная оценка важна. –
Поблагодарите Юваля, эти документы указали мне в правильном направлении. –