【问题标题】:autocomplete with thinking sphinx思考狮身人面像的自动完成
【发布时间】:2019-07-02 09:54:47
【问题描述】:

当我搜索第二个单词时,结果不匹配 例如“网络” 结果

["WEB MEDIA ","CREATIV WEB ","WEB SERVICES TECHNOLOGIES","iDURAR WEB AGENCY","WEB CREATION","DEV WEB SOLUTION","BIG WEB DZ","AMANA SITE WEB"]

但对于'web m' 结果

["VOISINAGE PC","DELTA SOFT","MMCOMPUTING ETS","MICROPROZ","PORTIDEE","LATICODE","CYBER WEB SERVICES","SIEGE SOCIAL","EL DALIL YALAOUI ET CIE - SIEGE COMMERCIAL""IMA"]

我尝试了互联网上的所有示例

ruby
@suggestions = Form.search(params[:term]).map{ |x| x[:name]}

SELECT * FROM form_core WHERE MATCH('web m') AND sphinx_deleted = 0 LIMIT 0, 20 狮身人面像 找到 23 个结果

【问题讨论】:

  • 您希望搜索的具体功能如何?如果你输入两个词,你希望两者都匹配还是只匹配一个?
  • @Mark 是的,我希望两者都匹配。问题是当我添加第二个单词时,结果只匹配第二个单词
  • name 是您唯一拥有的字段吗?或者您的表单索引是否涉及其他字段?另外:您使用的是哪个版本的 Sphinx 和 Thinking Sphinx?
  • 你好@pat 我通过添加 ^ 和 * 解决了这个问题并删除了星星 ruby ThinkingSphinx.search('^' + params[:term] + '*', options)

标签: ruby-on-rails ruby sphinx thinking-sphinx


【解决方案1】:

试试:

search_terms = params[:term].split(' ')
@suggestions = []
Form.all.each do |instance|
  next unless (search_terms - instance.name.join(' ')).empty?
  @suggestions << instance
end

这将创建一个搜索词数组,以及一个表单实例用于名称的单词数组。然后它检查 search_terms 数组中的每个元素是否存在于表单名称中存在的单词数组中,如果每个单词都存在,则将其添加到 @suggestions

【讨论】:

  • 这是一个糟糕的解决方案,狮身人面像搜索在哪里?
【解决方案2】:

我通过将 ^ 和 * 添加到

ThinkingSphinx.search('^' + params[:term] + '*', options)

没关系

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多