Değişen / genişletme nasıl Zend_Search_Lucene arananlar

1 Cevap php

Şu anda endeksi Zend_Search_Lucene kullanarak ve şu anda 1000 ya da öylesine civarında belgelerin bir sayıda arama duyuyorum. Ne yapmak istiyorum mevcut varsayılan, motor puanları bir belge üzerinde vurur nasıl değiştirmeliyiz.

Bir belge içinde hit sayısı frekansına Zend_Search_Lucene puanları, yani kelimenin 10 maçı sahip bir belge PHP sadece 3 maç ile bir belgeden daha yüksek atar PHP. Ne yapmaya çalışıyorum anahtar kelimelerin bir dizi geçmek ve bu anahtar kelimeler vurur bağlı olarak puan olduğunu. örneğin

Ben 5 anahtar kelime söylemek geçmek, PHP, MySQL, Javascript, HTML ve CSS ben karşı aramak dizin. Bir belge bu anahtar kelimeler için 3 maç var ve bir belge 4 maçları var, 4 puan yüksek maçlar. Belgede bu kelimeleri örneklerini sayısı beni ilgilendirmiyor.

Şimdi ben, ancak ben sonra neysem ulaşmak için bu nasıl kullanılacağını bilmek emin olun (veya parlak) değilim itiraf etmeliyim Zend_Search_Lucene_Search_Similarity hızlı bir göz yaşadım.

Ben lucene kullanarak mümkün yapmak istiyorum ne olduğunu ya da daha iyi bir çözüm var orada?

1 Cevap

Ben Zend_Search_Lucene_Search_Similarity section kılavuzun anlaşıldığı kadarıyla, ben bu skoru değiştirmez ki tf (terim frekans) yöntemi geçersiz kılmak için varsayılan benzerlik sınıfını genişleterek başlamak istiyorum:

class MySimilarity extends Zend_Search_Lucene_Search_Similarity {    
    public function tf($freq) {
        return 1.0; // overriding default sqrt($freq);
    }
}

Bu şekilde kibrit sayısı göz önüne alınmamalıdır. Eğer bu yeterli olacağını düşünüyor musunuz?

Sonra, bu endeksleme önce varsayılan benzerlik algoritması olarak ayarlayın:

Zend_Search_Lucene_Search_Similarity::setDefault(new MySimilarity());