如何交叉引用用户输入并只返回完全匹配的内容

li9yvcax  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(259)

我的程序在我的数据库中用名称交叉引用用户输入的成分列表,并返回列表中项目(而不是列表本身)与数据库中名称的精确匹配。
数据库中的成分名称最长可达4个单词,还包括空格、数字、破折号和括号中的单词。用户输入单个项目或项目列表,结果页上只输出数据库中的匹配项。用户搜索只能返回完全匹配的结果,因为其他任何东西都会扭曲结果。
输入的示例列表如下所示:avene thermal spring water(avene aqua)、双乙氧基苯酚甲氧基苯基三嗪、二乙基己基丁胺基三嗪、丁基甲氧基二苯甲酰甲烷、苯甲酸、辛基乙二醇、生育酚葡萄糖苷、聚山梨酯20、赋形剂、亚甲基双苯并三唑基四甲基丁基苯酚[纳米]
示例匹配结果为:亚甲基双苯并三唑基四甲基丁基苯酚[纳米]、聚山梨酯20、赋形剂
将输入的列表拆分为一个数组,然后与成分名称数组相交。如果有匹配项,它们将在我的视图中打印出来。方法如下。

class IngredientsController < ApplicationController

  def search  
      @parameters = params[:search].downcase.split(/, /)  
      @results = @parameters & ingredient_names
  end

private

  def ingredient_names 
  @ingredient_names = Ingredient.pluck :name
  end
end

这段代码功能正常,但不太方便用户使用,因为它要求用户输入一个列表,其中每个项目用逗号和空格分隔。如果输入中有任何错误(例如逗号和下一个单词之间没有空格),则不会返回匹配项。我想知道是否有另一种方法来实现这一点,即更加用户友好,同时仍然保持准确的匹配。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题