Should I endeksi veya Solr bu alanları saklamak (veya herhangi bir db)?

3 Cevap java

Background:
I have a cclassifieds website, and users may for example search for cars, and specify a price range, mileage, fueltype, gearbox and a manually inputted query-string if they like to put something specific into the search, ex "bmw m3".

Questions:
I am about to move this information to Solr for faster lookup, and wonder if I have to index or store the fields.

Kullanıcıların arama yapabilirsiniz sadece alanlar aslında "başlık" ve gizli bir "açıklama" olduğunu. Ben yukarıda bahsettiğimiz gibi Onlar ancak, örneğin, fiyat aralıkları belirleyebilirsiniz.

So I guess the "headline" and "description" fields should be indexed right? But should the price field, and any other sub-option fields also be indexed?

Bir MySQL sorgu sözdizimi böyle bir şey olacağını sorgulamak, bu yüzden ben bahsediyorum ne karşılaştırabilirsiniz: (hatalar içerebilir, yazdıkları nerede tam olarak nasıl unuttum)

  $query="SELECT * FROM cars_category WHERE headline='bmw m3' OR description='bmw m3' AND price BETWEEN 10000 AND 500000 AND fuel='petrol' AND etc etc";

Yani dizin / mağaza tüm alanları ya da ne, ne düşünüyorsun?

Indeksi ne depolamak ve ne belirlenmesi, veya her ikisi için bir yöntem var mı?

Teşekkürler

PS: Tipik cevaplar takdir edilmektedir

3 Cevap

and wonder if I have to index or store the fields.

Solr Benim anlayış çok sınırlı olduğunu, ama ne ben başladığımda beni karıştı indeksleme terminoloji oldu: bir veritabanı, veri depolamak ve bir dizin depolama / iki ayrı şeylerdir oluşturma ve (genellikle konuşan, en azından) iki veri depolanır Ayrı yerlerde, ama Solr yılında, anything Eğer Solr yüklemek is endeksli. Yani Solr arama yapabilmek için istediğiniz alanları karar ve alan türlerini atamak ve - hey presto - Solr etkileyici bir hız ile bu alandaki verileri bulabilirsiniz. Farklı alanlar (harf duyarlı ya da değil, örneğin) aranır nasıl belirleyebilir ve aralık arama ve benzeri belirleyebilirsiniz: burada wiki kontrol http://wiki.apache.org/solr/FrontPage#Search_and_Indexing ve sorgu sözdizimi http://wiki.apache.org/solr/SolrQuerySyntax Bu kapsamlı tedavisi için.

Ben katılıyorum: Eğer sıralama arama ya da olacak bir şey endeksli olmalıdır.

Ancak arama ve tipik sıralama yerine Açıklaması gibi büyük serbest metin alanlarının ayrı değerleri (yani "BMW", "Chevy", vb, "Acura" içeren alan Yapmak), alanlarının daha iyi çalışır. Sen daha iyi arama sonuçları ve daha iyi performans için bu düşünebilirsiniz.

Sizin durumunuzda, ben indeksleme Fiyat, Yakıt, Başlık ve üzerinde arıyor başka hiçbir farklı alanları öneriyoruz.

Eğer Açıklama = "BMW M3" için arama Tarif bir dizin sadece yararlı olacaktır. Ancak bu arama mantığı böyle "Pirelli lastikleri ile Kırmızı BMW M3" gibi sonuçları ihmal edecek. "% BMW M3%" gibi tanımlama için bir arama yani bir dizin çok yararlı olmayacak, zaten tüm tabloyu taramak zorunda olacak.

Açıklaması dışında Endeksi şey. Eğer "'% xxx% LIKE" kullanarak bir alan ile bir sorgu yaptığınızda en veritabanları dizin kullanmak etmeyin.