Zend Search kullanarak belirtilen alanları aramaya dışlamak için nasıl (Lucene)

1 Cevap php

Ben (Lucene göre) PHP Zend Framework Arama kullanarak bir arama indeksi inşa ettik. Arama bir al / sat web sitesi için.

Benim arama dizini aşağıdaki alanları içerir:

item-id (UnIndexed)
item-title (Text)
item-description (UnStored)
item-tags (Text)
item-price (keyword)
seller-id (UnIndexed)
seller-name (Text)

Ben kullanıcı sadece öğeler için arama ya da isme göre satıcılar için arama ya da kendi arama filtreleme, indeks aramak istiyorum.

Ben lucene varsayılan arama ayarlarını kullanarak bir arama yaparsanız tüm 5 öğe alanları ve satıcı-adı alanını arama olacaktır. Bu benim ne istediğinizi değil. Kullanıcı Ben onlara bir madde ararken, ya da satıcı-adı için ise açılan menüden seçmek için gerekli istediğiniz arama yapar ne isterim olduğunu.

Satıcı-adı alanını görmezden öğeleri ararken nasıl arama sorgusunu söyleyebilir? Ve ne zaman satıcı-ismim ne i madde alanlardan herhangi arasında arama değil arama sorgusunu söyleyebilir arıyor? Ya da satıcı adları için ayrı bir dizin oluşturmak için daha iyidir?

1 Cevap

Açıkça not lucene sorgu dili, ya Zend_Search_Lucene sorgu inşa API bir alanı aramak için hiçbir yolu yoktur.

Ancak, açıkça do sorguda aramak istediğiniz size hangi alanların listeleyebilirsiniz. Bir örnek olacaktır:

seller-name: Joe McBob

Bu yaklaşımı kullanarak, açıkça sorgulamak istediğiniz hangi alanların listesi var, ve onlara ne aramak olacaktır. Ayrıca aynı metin ile item-title alanını aramak için gerekirse Yani, yukarıdaki çoğaltmak var, ama farklı alan adı ile olur. Bir örnek olacaktır:

seller-name: Joe McBob OR item-title: JoeMcBob

Sen, elbette, hem de, Zend_Search_Lucene sağlayan sorgu bina API aracılığıyla tüm bu yapabilirsiniz. manual Orada bazı iyi örnekler vardır.

One thing worth noting here is that, as you've discovered, Zend_Search_Lucene will search ALL fields by default. This is one of the ways in which it differs from Java Lucene. You may, however, set a default field to query, using the setDefaultSearchField static method of the Zend_Search_Lucene class.