我正在设计一个桌面应用程序(无聊的会计工作),并且具有“搜索产品”功能。
我想要一个不错但简单的“智能”搜索框。当前,搜索框通过拆分所有指定的单词并查找部分匹配它们的any的所有记录来工作。
现在,我面临以下难题:我真的想提供一种方法来指定用户是否要匹配any或all指定的单词。有什么好的方法?
另一个问题是也许用户想要执行精确匹配。同样,我希望该应用程序易于使用。
此刻,我只将三个单选按钮扔到了表单上,但是内部感觉很脏……有什么意见吗?
Google很久以前就解决了这一问题-毫无用处。 ;)
我建议您消除选择的必要,并同时进行三个搜索:“精确短语”,“匹配所有单词”,AND“匹配任何单词”。然后按该顺序组合(SQL“联合”)那些结果,并将其呈现给用户。
缺点:
正数:
确保从搜索短语中删除干扰词并规范大小写/词缀等。即使用户输入了错误的大小写/时态/错误的文章,也可以帮助您找到用户所需的结果。
还要确保搜索仅适用于键盘(即不强迫用户使用鼠标。<search phrase> <Enter>
应该足以获取结果)。
我个人认为,您应该为用户提供一种优化搜索的方法,因为:
我建议这样做的方式与克里斯建议的方式有些类似。
取自 DeepDyve :
按下“优化”后,您可以立即打开一个下拉列表,或者如果将来打算添加更多搜索选项,甚至可以使用一个小对话框。
如果主要考虑空间问题,您是否考虑过使用下拉菜单?尽管可能不是一个出色的解决方案(因为它确实需要更多的点击),但它比一组单选按钮占用的空间更少。
当前选项将与扩展器一起出现,以允许其他选择。
+-----------------+---+ +---------------------+ +----+
Search | exact phrase | V | | | | Go |
+-----------------+---+ +---------------------+ +----+
| all words |
| any words |
| exact phrase |
+---------------------+
(不好的ascii艺术)
一种改进可能是在鼠标悬停在扩展器上而不是用户必须单击时执行下拉菜单,但这又不是理想的解决方案。
我会取消搜索选项-我认为这不是您的用户的想法,但是,随着UI口号的发展,请与实际用户一起测试并查看他们的想法。
通常,搜索引擎的优先级如下:
绝对同意Erion-无需用户选择那种东西-让您的搜索引擎(无论它是什么)为您完成。
无论您的后端使用哪种技术进行搜索,都有多种方法可以根据您想要的标准(即就像Google一样)对结果进行优先级排序。对于此类事情,某些设置可能比其他设置更难,但是即使是基本的SQL Server全文索引也可以提供这种级别的搜索结果组织。
只需做出最佳用户体验的决定,然后让您的工程师(或开发人员,如果需要)进行工作即可。那就是他们在那里的目的。由于我也是工程师,所以我可以这么说:)
如果您感到好奇,全文搜索引擎最常用的方法是使用TD-IDF评分。这代表 术语频率-反向文档频率 。要点是,如果搜索词经常出现在文档中,则文档的相关性就更高了,这与Word整体上出现的文档数量相去甚远。