it-swarm.cn

搜索框用户界面-“所有单词”,“部分匹配”,“精确短语”

我正在设计一个桌面应用程序(无聊的会计工作),并且具有“搜索产品”功能。

我想要一个不错但简单的“智能”搜索框。当前,搜索框通过拆分所有指定的单词并查找部分匹配它们的any的所有记录来工作。

现在,我面临以下难题:我真的想提供一种方法来指定用户是否要匹配anyall指定的单词。有什么好的方法?

另一个问题是也许用户想要执行精确匹配。同样,我希望该应用程序易于使用。

此刻,我只将三个单选按钮扔到了表单上,但是内部感觉很脏……有什么意见吗?

21
Leonardo Herrera

Google很久以前就解决了这一问题-毫无用处。 ;)

我建议您消除选择的必要,并同时进行三个搜索:“精确短语”“匹配所有单词”,AND“匹配任何单词”。然后按该顺序组合(SQL“联合”)那些结果,并将其呈现给用户。

缺点

  • 数据库上的更多负载。

正数

  • 对用户来说更自然:如果有人输入了几个单词,则很可能他们知道他们在寻找什么;他们不是在黑暗中开枪,试图使至少一个单词正确
  • 匹配搜索引擎上的经验
  • 节省一键互动,节省时间。

确保从搜索短语中删除干扰词并规范大小写/词缀等。即使用户输入了错误的大小写/时态/错误的文章,也可以帮助您找到用户所需的结果。

还要确保搜索仅适用于键盘(即不强迫用户使用鼠标。<search phrase> <Enter>应该足以获取结果)。

26
Erion

我个人认为,您应该为用户提供一种优化搜索的方法,因为:

  1. 您说这是您的目标(“我真的想要...”),无论您采用哪种自动方法,都不允许用户选择。
  2. Gmail(这是一个应用程序-与网络搜索相比,它与您自己的应用程序更相似)确实允许您显示和优化搜索选项。
  3. 甚至常规的Google搜索都允许用户手动优化结果,即,如果搜索字符串用引号引起来,它将整体上进行搜索。
  4. 作为一个有经验的用户,如果我知道我的标准,那么根据我不知道的某种算法为我做出自动决策并改组结果,这确实对我不利。

我建议这样做的方式与克里斯建议的方式有些类似。

取自 DeepDyve : alt text

按下“优化”后,您可以立即打开一个下拉列表,或者如果将来打算添加更多搜索选项,甚至可以使用一个小对话框。

5
Dan Barak

如果主要考虑空间问题,您是否考虑过使用下拉菜单?尽管可能不是一个出色的解决方案(因为它确实需要更多的点击),但它比一组单选按钮占用的空间更少。

当前选项将与扩展器一起出现,以允许其他选择。

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

(不好的ascii艺术)

一种改进可能是在鼠标悬停在扩展器上而不是用户必须单击时执行下拉菜单,但这又不是理想的解决方案。

4
ChrisF

我会取消搜索选项-我认为这不是您的用户的想法,但是,随着UI口号的发展,请与实际用户一起测试并查看他们的想法。

通常,搜索引擎的优先级如下:

  1. 尝试查找整个内容(与)
  2. 尝试一起找到单个单词的存在
  3. 尝试找到单词的片段(词干-输入“踢”,它也与“踢”相匹配)
2
Julian H

绝对同意Erion-无需用户选择那种东西-让您的搜索引擎(无论它是什么)为您完成。

无论您的后端使用哪种技术进行搜索,都有多种方法可以根据您想要的标准(即就像Google一样)对结果进行优先级排序。对于此类事情,某些设置可能比其他设置更难,但是即使是基本的SQL Server全文索引也可以提供这种级别的搜索结果组织。

只需做出最佳用户体验的决定,然后让您的工程师(或开发人员,如果需要)进行工作即可。那就是他们在那里的目的。由于我也是工程师,所以我可以这么说:)

1
Charles Boyung

如果您感到好奇,全文搜索引擎最常用的方法是使用TD-IDF评分。这代表 术语频率-反向文档频率 。要点是,如果搜索词经常出现在文档中,则文档的相关性就更高了,这与Word整体上出现的文档数量相去甚远。

0
CambridgeMike