【问题标题】:Fuzzy search box widget with `Shiny` in R?R中带有“闪亮”的模糊搜索框小部件?
【发布时间】:2014-08-26 16:57:40
【问题描述】:

有没有人创建或见过一个闪亮的应用程序,该应用程序具有搜索框小部件,在您键入时根据模糊匹配提供上下文建议?

彭博终端使用它,谷歌使用它。其中一种可能的底层技术称为elasticsearch.org 's fuzzy query,具有两种 R 实现:

  1. duncantl/RElasticSearch
  2. ropensci/elastic

基本的Shiny 的datatable 附带的搜索框过滤器并没有完全消除它。

如果这是尚未与 Shiny 集成的东西,有什么粗略的指导如何构建它吗?我怀疑它在包含大量文本的大表格(或文档)上非常有用,当您想要查找特定行而不显示完整表格时。

【问题讨论】:

  • 您是否希望将此搜索框小部件用于数据表?
  • 不一定。 Shinys datatable 的搜索框只是对当前存在的内容的说明,与我描述的内容很相似

标签: r elasticsearch shiny fuzzy-search


【解决方案1】:

也许可以为组合框提供来自stringdist() 的列表,该列表会将输入字符串与已知列表进行比较,并提供具有最短字符串距离的 10 个项目的项目。对于大型列表可能会非常低效,但与短列表比较时,该算法相当快。

其中一个 stringdist 方法甚至会根据单词的发音方式进行比较,但不确定这是否有用。

【讨论】:

  • 这绝对比设置弹性搜索服务器、向其提供数据和编写observe() 函数要容易。也可以使用agrep 代替stringdist。
【解决方案2】:

如果您使用 selectInput(),那么您可以将参数“choices”设置为一个向量,该向量的内容将显示为用户类型。这样做的问题是用户无法选择向量中不包含的任何内容。

用户界面:

selectInput(
    "reference_name", label = h3("Selection"), choices = vector_of_search_possibilities, selectize = TRUE, selected = "Alabama"
  )

服务器: 使用

引用此对象
input$reference_name

【讨论】:

  • 谢谢。 vector_of_search_possibilities 会在输入时更新建议(与 google.com 搜索框相同的体验)吗?
  • 是的,它会的!包含已输入的部分字符串的项目将显示在下方,如 google 中的建议
猜你喜欢
  • 2018-06-26
  • 2018-07-07
  • 2021-01-14
  • 2018-07-25
  • 2020-10-01
  • 2015-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多