Yedi nitelikleri bir listeden bir veya daha fazla * nitelikleri * adres veritabanı satırları bulma etkili bir yöntem

0 Cevap php

Bu soru için, ben kimse ben şu anda (aşağıda) uygulanması planlıyorum ne uygulamak için nasıl daha iyi bir fikir olup olmadığını görmek için arıyorum:

Ben bir veritabanı kullanarak, görüntülerin bir dizi takip ediyorum. Her resim bir satır tarafından temsil edilmektedir.

Ben farklı arama parametreleri bir dizi kullanarak, görüntüler için arama yapabilmek istiyorum. Bu parametrelerden biri, bir arama-by-renk seçeneği içerir. (Arama şeyler kalanı şu anda gayet iyi çalışıyor.)

Bu veritabanında Görüntüler yedi renge kadar içerebilir:

-Kırmızı

-Turuncu

-Sarı

-Yeşil

-Mavi

-Indigo

-Violet


Here are some example user queries:

"Ben kırmızı içeren bir resim istiyorum."

"Ben kırmızı ve mavi içeren bir resim istiyorum."

"Ben sarı ve mor içeren bir resim istiyorum."

"Ben, kırmızı, turuncu, sarı, yeşil, mavi, çivit mavisi ve mor içeren bir resim istiyorum."


And so on. Users make this selection through the use of checkboxes in an html form. They can check zero checkboxes, all seven, and anything in between.

Ben insanların bu veritabanı arama yapmak için en etkili yol olacağını düşünüyorum ne duymak merak ediyorum.

Şu anda iki olası seçenek var, ama ben düşünmüyorum ki iyi bir şey olmalı gibi hissediyorum.

(Option 1)
-For each row, simply have seven additional fields in the database, one for each color. Each field holds a 1 or 0 (true/false) value, and I SELECT based on whatever the user has checked off. (I didn't like this solution so much, because it seemed kind of wasteful to add seven additional fields...especially since most pictures in this table will only have 3-4 colors max, though some could have up to 7. So that means I'm storing a lot of zeros.) Also, if I added more searchable colors later on (which I don't think I will, but it's always possible), I'd have to add more fields.

(Option 2)
-For each image row, I could have a "colors" text field that stores space-separated color names (or numbers for the sake of compactness). Then I could do a fulltext match against search through the fields, selecting rows that contain "red yellow green" (or "1 3 4"). But I kind of didn't want to do fulltext searching because I already allow a keyword search, and I didn't really want to do two fulltext searches per image search. Plus, if the database gets big, fulltext stuff might slow down.

Herhangi daha iyi seçenekler olduğunu ben düşünmedim?

Teşekkürler!

Yan Not: Ben bir MySQL veritabanı ile çalışmak için PHP kullanıyorum.

0 Cevap