Tôi đang thiết kế một ứng dụng máy tính để bàn (công cụ kế toán nhàm chán) và tôi có tính năng "sản phẩm tìm kiếm".
Tôi muốn có một hộp tìm kiếm 'thông minh' đẹp nhưng đơn giản. Hiện tại, hộp tìm kiếm hoạt động bằng cách chia tất cả các từ được chỉ định và tìm tất cả các bản ghi khớp một phần bất kỳ trong số chúng.
Bây giờ tôi phải đối mặt với tình huống khó xử sau: Tôi thực sự muốn cung cấp một cách để chỉ định xem người dùng có muốn khớp bất kỳ hoặc tất cả các từ được chỉ định. Điều gì sẽ là một cách tiếp cận tốt?
Một vấn đề khác là có thể người dùng muốn thực hiện khớp chính xác. Một lần nữa, tôi muốn ứng dụng đơn giản để sử dụng.
Hiện tại tôi chỉ cần ném ba nút radio vào biểu mẫu, nhưng tôi cảm thấy bẩn bên trong ... có ý kiến gì không?
Google đã giải quyết điều này từ lâu - không sử dụng phát minh lại bánh xe. ;)
Tôi khuyên bạn nên loại bỏ nhu cầu chọn và thực hiện ba tìm kiếm cùng một lúc: "cụm từ chính xác" , "khớp tất cả các từ" , VÀ "khớp bất kỳ" . Sau đó hợp nhất (SQL "union") những kết quả theo thứ tự đó và trình bày chúng cho người dùng.
Nhược điểm:
Tích cực:
Đảm bảo xóa các từ nhiễu khỏi cụm từ tìm kiếm và chuẩn hóa các trường hợp/cách chia, v.v.; nó sẽ giúp tìm ra kết quả mà người dùng của bạn cần, ngay cả khi họ gõ các từ tìm kiếm trong trường hợp sai/căng thẳng/với bài viết sai.
Đồng thời đảm bảo tìm kiếm chỉ hoạt động với bàn phím (nghĩa là không bắt buộc người dùng sử dụng chuột. <search phrase> <Enter>
nên là đủ để có kết quả).
Ý kiến cá nhân của tôi là bạn nên cung cấp một cách để người dùng tinh chỉnh tìm kiếm, bởi vì:
Cách tôi đề xuất để làm điều đó có phần giống với những gì Chris đề xuất.
Lấy từ DeepDyve :
Khi bạn nhấn "tinh chỉnh", bạn có thể mở danh sách thả ngay lập tức hoặc thậm chí sử dụng một hộp thoại nhỏ nếu trong tương lai bạn dự định thêm nhiều tùy chọn tìm kiếm.
Nếu không gian là mối quan tâm chính bạn đã nghĩ đến việc sử dụng thả xuống? Mặc dù có lẽ không phải là một giải pháp tuyệt vời (vì nó đòi hỏi nhiều nhấp chuột hơn) nhưng nó sẽ chiếm ít không gian hơn một bộ nút radio.
Tùy chọn hiện tại sẽ xuất hiện cùng với thiết bị mở rộng để cho phép các lựa chọn khác.
+-----------------+---+ +---------------------+ +----+
Search | exact phrase | V | | | | Go |
+-----------------+---+ +---------------------+ +----+
| all words |
| any words |
| exact phrase |
+---------------------+
(xin lỗi nghệ thuật ascii xấu)
Một sàng lọc có thể là để thực hiện thả xuống khi chuột di chuyển qua thiết bị mở rộng thay vì người dùng phải nhấp, nhưng một lần nữa, đây không phải là một giải pháp lý tưởng.
Tôi sẽ giết các tùy chọn tìm kiếm - Tôi không nghĩ đó là cách người dùng của bạn nghĩ, nhưng, như câu thần chú UI, hãy kiểm tra nó với người dùng thực và xem họ nghĩ gì.
Thông thường các công cụ tìm kiếm ưu tiên như thế này:
Chắc chắn đồng ý với Erion - không cần người dùng chọn loại điều đó - có công cụ tìm kiếm của bạn (bất kể đó là gì) làm điều đó cho bạn.
Bất kể công nghệ mà back-end của bạn đang sử dụng để tìm kiếm là gì, vẫn có cách để nó ưu tiên kết quả theo bất kỳ tiêu chí nào bạn muốn (ví dụ như Google làm). Một số có thể khó thiết lập hơn những thứ khác cho loại điều này, nhưng ngay cả một lập chỉ mục toàn văn bản SQL Server cơ bản cũng có thể cung cấp mức độ tổ chức kết quả tìm kiếm này.
Chỉ cần đưa ra quyết định cho trải nghiệm người dùng tốt nhất và yêu cầu các kỹ sư của bạn (hoặc nhà phát triển, nếu bạn phải) làm cho nó hoạt động. Đó là những gì họ đang ở đó. Vì tôi cũng là một kỹ sư, tôi có thể nói vậy :)
Nếu bạn tò mò, các công cụ tìm kiếm toàn văn hoạt động phổ biến nhất bằng cách sử dụng tính năng ghi điểm TD-IDF. Chữ này là viết tắt của Tần số tài liệu nghịch đảo tần số . Gist là một tài liệu có liên quan hơn nếu cụm từ tìm kiếm xuất hiện trong đó rất thường xuyên, điều này được giảm giá bởi số lượng tài liệu mà Word xuất hiện nói chung.