İşte kurulum, ben bir Lucene İndeksi var ve ben endeksli olması 2,000 belgelerle iyi çalışır. Ben sorguları debug Luke (Lucene Endeksi Araç, v.0.9.2) kullanıyorum ve ZF 1.9 kullanıyorum.
Aşağıdaki gibi benim Lucene Endeksi için düzeni:
I = Indexed
T = Tokenized
S = Stored
Fields:
author - ITS
category - ITS
publication - ITS
publicationdate - IS
summary - ITS
title - ITS
Temelde mix ve yukarıdaki bilgilerin herhangi bir maç icar, yukarıdaki alanlara göre aranabilir bir form var, ve bir zend luceue sorgu ayrıştırmak olacaktır. Bu sorun, sorun değil ben terimleri birleştirerek başladığınızda, bulmak içinde yangınlar sorgu sadece kaybolmasına neden olur "optimize" yöntemi.
İşte ben şu anda kullanıyorum bir örnek arama:
Form Version:
Title: test title
Publication: publication name
Lucene Query Parse:
+(title:test title) +(publication:publication name)
Ben bu sorgu dize almak ve LUKE içine tokat, ve "Ara" hit Şimdi, eğer sonuç gayet döndürür. Out Sorgu Bul yöntemini kullanabilirsiniz, bu bombalar. Yani (Ben inanıyorum) bu işlevleri nasıl içine biraz araştırma yaptım ve bir sorun buldu
Öncelikle, heres arama yapar kod gerçek hatları:
$searchQuery = "+(title:test title) +(publication:publication name)";
$hits = new ArrayObject($this->index->find($searchQuery));
Bu gerçek kod basitleştirilmiş versiyonu, ama üretir ne bu.
Şimdi burada ne bazı hata ayıklama sonra, "optimize" yöntemi sadece sorguyu kendisi yok fark ettik. Ben aşağıdaki kodu oluşturuldu:
$rewrite = $searchQuery->rewrite($this->index);
$optimize = $searchQuery->rewrite($this->index)->optimize($this->index);
echo "======<br/>";
echo "Original: ".$searchQuery."<br/>";
echo "Rewrite: ".$rewrite."<br/>";
echo "Optimized + Rewrite: ".$optimize."<br/>";
echo "======<br/>";
Hangi aşağıdaki metni verir:
======
Original: +(title:test title) +(publication:publication name)
Rewrite: +(title:test title) +(publication:publication name)
Optimized + Rewrite:
======
3. çıkış tamamen boş olduğunu nasıl fark. Bu Rewrite & Optimize sorguda sadece kendini boş sorgu dizesi neden olduğu görülmektedir.
Herkes optimize yöntemi sadece hep birlikte benim sorgu kaldırılması gibi görünüyor neden herhangi bir fikrin var mı? Ben çözümlü gerekebilir bir filtre veya arayüz çeşit eksik? Luke yapıştırın ve elle dizin karşı onları çalıştırdığınızda tüm sorgular mükemmel çalışır, ama aptal şey Zend arama yapmak için sorgu ayrıştırma yolu ile oluyor.
Herhangi bir yardım takdir edilmektedir.