web-gelistirme-sc.com

Arama kutusu kullanıcı arayüzü - "tüm kelimeler", "kısmi eşleme", "tam ifade"

Ben bir masaüstü uygulaması (sıkıcı muhasebe şeyler) tasarlıyorum ve bir "ürün arama" özelliği var.

Güzel ama basit bir 'akıllı' arama kutusuna sahip olmak istiyorum. Şu anda, arama kutusu belirtilen tüm kelimeleri bölerek ve herhangi ile kısmen eşleşen tüm kayıtlara bakarak çalışır.

Şimdi aşağıdaki ikilemle karşı karşıyayım: Gerçekten kullanıcının herhangi veya tümü belirtilen kelimeleri eşleştirmek isteyip istemediğini belirtmek için bir yol sağlamak istiyorum. İyi bir yaklaşım ne olurdu?

Başka bir sorun, belki bir kullanıcının tam bir eşleşme yapmak istemesidir. Yine, uygulamanın kullanımı basit olmasını istiyorum.

Şu anda forma üç radyo düğmesi attım, ama içinde kirli hissediyorum ... herhangi bir görüş?

21
Leonardo Herrera

Google bunu uzun zaman önce çözdü - tekerleği yeniden icat etmenin bir yararı yok. ;)

Seçme gereğini kaldırmanızı ve aynı anda üç arama yapmanızı öneririm: "tam ifade" , "tüm kelimeleri eşleştir" , AND "herhangi biriyle eşleşir" . Sonra bu sonuçları bu sırayla birleştirin (SQL "birleşimi") ve bunları kullanıcıya sunun.

Dezavantajları:

  • veritabanınıza daha fazla yük.

Pozitif:

  • kullanıcı için daha doğal: Birisi birkaç kelime girerse, büyük olasılıkla ne aradığını bilir; karanlıkta en az bir Kelime bulmaya çalışmıyor
  • arama motorlarındaki deneyimi eşleştirir
  • etkileşime tek bir tıklama kaydeder = zaman kazandırır.

Gürültü kelimelerini arama ifadesinden çıkardığınızdan ve vakaları/konjugasyonları vb. Normalleştirdiğinizden emin olun .; arama kelimelerini yanlış/tense/yanlış makaleye yazsalar bile, kullanıcıların ihtiyaç duydukları sonuçları bulmanıza yardımcı olacaktır.

Ayrıca aramanın yalnızca klavye ile çalıştığından emin olun (yani kullanıcıyı fareyi kullanmaya zorlamadan). <search phrase> <Enter> sonuç almak için yeterli olmalıdır).

26
Erion

Kişisel düşüncem, kullanıcının aramayı hassaslaştırması için bir yol sağlamanız gerektiğidir, çünkü:

  1. Bunu hedefiniz olarak belirttiniz ("Gerçekten istiyorum ...") ve hangi otomatik yaklaşımı kullanırsanız kullanın, kullanıcının seçim yapmasına izin vermezsiniz.
  2. Bir uygulama olan Gmail (web uygulamanızdan daha çok kendi uygulamanıza benzer) arama seçeneklerini göstermenize ve hassaslaştırmanıza olanak tanır.
  3. Düzenli Google araması bile kullanıcının sonuçları manuel olarak hassaslaştırmasına olanak tanır, yani, arama dizesi tırnak işaretleri arasındaysa, bir bütün olarak arar.
  4. Deneyimli bir kullanıcı olarak, kriterlerimi bilirsem, benim için otomatik kararlar veririm ve sonuçlarımı bilmediğim bir algoritmaya göre karıştırırsam, gerçekten bana karşı çalışır.

Bunu önerebileceğim yol Chris'in önerisine biraz benziyor.

Alınan DeepDyvealt text

"Daralt" düğmesine bastıktan sonra, hemen bir bırakma listesi açabilir veya gelecekte daha fazla arama seçeneği eklemek istiyorsanız küçük bir iletişim kutusu kullanabilirsiniz.

5
Dan Barak

Eğer öncelikli alan boşluksa, bir açılır liste kullanmayı düşündünüz mü? Belki de parlak bir çözüm olmasa da (daha fazla tıklama gerektirdiği için) bir dizi radyo düğmesinden daha az yer kaplardı.

Geçerli seçenek, diğer seçeneklere izin vermek için genişletici ile birlikte görünecektir.

       +-----------------+---+ +---------------------+ +----+
Search | exact phrase    | V | |                     | | Go |
       +-----------------+---+ +---------------------+ +----+
       | all words           |
       | any words           |
       | exact phrase        |
       +---------------------+

(kötü ascii sanatını özür dilerim)

Bir ayrıntılandırma, fare tıklamak zorunda kalmadan kullanıcı genişleticinin üzerine geldiğinde açılır menüyü gerçekleştirmek olabilir, ancak yine de ideal bir çözüm değildir.

4
ChrisF

Arama seçeneklerini öldürürdüm - kullanıcılarınızın böyle düşündüğünü sanmıyorum, ancak UI mantra giderken gerçek kullanıcılarla test edin ve ne düşündüklerini görün.

Genellikle arama motorları aşağıdaki gibi öncelik taşır:

  1. Her şeyi bulmaya çalışın (AND)
  2. Tek tek kelimelerin varlığını birlikte bulmaya çalışın
  3. Kelimelerin parçalarını bulmaya çalışın (saplar - siz de 'tekme' ile eşleşen 'tekme' yazıyorsunuz)
2
Julian H

Erion ile kesinlikle katılıyorum - kullanıcının bu tür şeyleri seçmesine gerek yok - arama motorunuzun (ne olursa olsun) sizin için yapmasını sağlayın.

Arka ucunuz arama için hangi teknolojiyi kullanırsa kullansın, sonuçları istediğiniz ölçütlere göre (örneğin Google'ın yaptığı gibi) öncelik sırasına koymanın yolları vardır. Bazıları bu tür bir şey için diğerlerinden daha zor olabilir, ancak temel bir SQL Server tam metin dizini bile bu düzeyde arama sonuçları organizasyonu sağlayabilir.

En iyi kullanıcı deneyimi için karar verin ve mühendislerinizin (veya gerekirse geliştiricilerin) çalışmasını sağlayın. Bunun için oradalar. Ben de mühendis olduğum için şunu söyleyebilirim :)

1
Charles Boyung

Merak ediyorsanız, tam metin arama motorları en çok TD-IDF puanlamasını kullanarak çalışır. Bu Terim Sıklığı-Ters Belge Sıklığı anlamına gelir. Gist, arama terimi çok sık görünüyorsa bir belgenin daha alakalı olması, Word'ün genel olarak göründüğü belge sayısı ile indirgenmiş olmasıdır.

0
CambridgeMike