2010-11-19 12 views
-1

Bir arama modeli ile web uygulaması üzerinde çalışıyoruz.Bir tasarım modeli için sor

Arama uygulamasında, istemciden istek parametrelerini yakalar ve daha sonra arama için bir hazırda-arama sorgusu oluşturur.

Şimdi sorun, uçlardan gelen parametrelerin değişebilir olmasıdır !. biz kabul

Tüm parametreler aşağıdaki gibi sıralanmıştır:

1) anahtar kelime.

Aramak için kullanılan anahtar sözcük (ler), yalnızca bu parametre iletilse bile bir arama isteği işlenebilir. Geçerli örnek:

/search?keyword="test" 

2) lowleftX, lowleftY, upperrightX, upperrightY.

Bu dört parametrenin aynı anda veya asla oluşmaması gerekir. Bu dört paragaranın lucene'de TermRangeQuery için kullanılması gerekir. Bunlardan biri ortaya çıkarsa, kalan üçü de oluşmalıdır. Ve bu dört parametre, "anahtar kelime" ile eşzamanlı olarak gerçekleşebilir. geçerli örneği: Bu arama kapsamını sınırlamak için kullanılır

/search?lowleftX=10&lowleftY=10&upperrightX=40&upperrightY=30 
/search?lowleftX=10&lowleftY=10&upperrightX=40&upperrightY=30&keyword="test" 

3) kategorisi (sadece) özel bir kategori içinde arama.

4) başlangıç ​​Bu iki parametre çağrı için kullanırken

sınırlar.

5) returnFields

Dizindeki Saklı ise (dizinden retivived edilecek returnFields) ve müşteri geri dönün.

Bu nedenle, tahmin sözdizimini kullanarak sorgu oluşturma konusunda hiçbir fikrim yok (eğer .... else .... if ...).

Herkes nasıl anlatabilir?

cevap

0

"Tahmini sözdizimi" ile ne kastettiğiniz hakkında hiçbir fikrim yok, ama bana göre 1 -3 gerçek Lucene sorgusu. Parametreleri incelemeniz ve sahip olduğunuz sorgu türünün adı ve sayısına bağlı olarak karar vermeniz gerekir. Sorgunun farklı alt sınıflarını, özellikle de BooleanQuery'yi kullanarak, uygun bir Lucene sorgusu oluşturun ve bunu bir Hazırda Bekletme Arama FullTextQuery oluşturmak için kullanın. Bu tam metin sorgusunda başlangıç ​​ve limit parametrelerini belirtin. Alan değerlerini doğrudan dizinden almak için projeksiyonlar kullanıyorsanız, tam metin sorgusunda da öngörülen alan adlarını da ayarlayın. Umarım bu biraz yardımcı olur.