2010-05-16 18 views
6

arama yapamazsınız Zend Lucene ben açıklama alanlarına numaralarını arayamazsınız Zend Lucene kullanarak sayılar

şöyle Eklendi:

$doc->addField(Zend_Search_Lucene_Field::Text('description', $current_item['item_short_description'], 'utf-8')); 

bu Googling Aşağıdaki kodu uygulayarak bunu sorunu çözmek, ancak gerektiğini göstermiştir ..:

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive()); 

herhangi bir kehanet?

cevap

8

Varsayılan çözümleyici 'u iki kez: Ayarlama işleminin yanı sıra arama işleminde ayarlamanız gerekir.

yukarıdan kod satırını kullanın:

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive()); 
0

Ben 'zend' hakkında emin değilim, ama Lucene içinde sayı ile anlaşma için, sen tekniği aşağıdaki kullanımını gerekir:

document.Add: Aşağıdaki kullanımını belgelemek için int yerleştirmek için

  • (Yeni Alan (FIELD_SPEC, NumberTools.LongToString (YOUR_INT), Field.Store.YES, Field.Index.UN_TOKENIZED));

  • değeri kullanım Terim bulmak için: Dönem (FIELD_SPEC, NumberTools.LongToString (YOUR_INT))

+0

nasıl açıklama için bunu kullanıyor? Ben açıklamanın içindeki numaraların aranabilir olmasını istiyorum. Sadece "seprate integer" yok. –

+0

@Pavel Dubinin - notuma bakın: "Değer kullanımının yerini belirlemek için Terim: ..." Bu yüzden aramaya ihtiyacınız olduğunda, bunu NumberTools kullanarak inşa edilen BooleanQuery'nin parçası olarak oluşturabilirsiniz. Standart qury çözümleyiciyi kullanırsanız biraz karmaşıktır - bu durumda, sorgulardaki tüm sayıları NumberTools tarafından oluşturulan değerlere göre değiştirerek ön işlem yapın – Dewfy

1

kullandığınız mü Zend_Search_Lucene önce veya çağırdıktan sonra komut :: open()?

Önceden yapılması kesinlikle işe yarıyor.