Zend lucene kullanarak zipcodes nasıl arama yaparım?

2 Cevap php

Ben kütüğü oluşturmak için bu kullanarak Zend Lucene ile çok basit bir şirket endeksi var:

// store company primary key to identify it in the search results
$doc->addField(Zend_Search_Lucene_Field::Keyword('pk', $this->getId()));

// index company fields
$doc->addField(Zend_Search_Lucene_Field::Unstored('zipcode', $this->getZipcode(), 'utf-8'));
$doc->addField(Zend_Search_Lucene_Field::Unstored('name', $this->getName(), 'utf-8'));

Ben şirket adına değil, posta kodu arama yapabilirsiniz. Zend Lucene Arama indeksleme tamsayılar ile ilgili bir sorun var mı? S / o deneyim oldu biraz ışık tutacak olsaydı, bana yardım edin. Ben sadece posta kodu ile arama lucene kullanarak oldukça yaygın olduğunu tahmin edebilirsiniz.

2 Cevap

Ben Zend Lucene için varsayılan metin Analyzer varsayılan numaraları aramaz inanıyorum. Zend birkaç farklı metin analizörleri ile paketlenmiş geliyor. Numaraları ve karakterleri hem arama TextNum analizörü kullanın. Size yararlı olabilecek zend / arama / lucene / analiz / analizörü / ortak klasördeki diğer analizörleri bir avuç vardır.

Aşağıdaki kod ile varsayılan analizörü değiştirebilirsiniz:

Zend_Search_Lucene_Analysis_Analyzer::setDefault(
    new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum());

Eğer 123 için arama yapıyorsanız, örneğin 123 gibi 34.123 ile tüm hit alırsınız. Yani dizin konum ve sorgu dizesi açık olduğundan emin olmak gerekir.

Ben böyle "000123" gibi bir dize olarak endekse posta kodu öneririz. Bundan sonra "000123" ile endeks üzerinde arama yapabilir ve 34.123 gibi doğru resultset ve hiçbir şey alırsınız. Sadece "doğru" sorgu dizesi içine posta kodu çevirmek zorunda.