思考狮身人面像 - 首先无法获得完全匹配

时间:2016-08-18 13:06:48

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

我有很简单的想法狮身人面像设置:

的indeces:

indexes first_name, :sortable => true  
indexes last_name, :sortable => true  
indexes family_name, :sortable => true  
indexes born_date, :sortable => true  
indexes death_date, :sortable => true

其中还有一些其他相关模型,但事实并非如此。

这就是我使用的谜语:

Riddle::Query.escape( URI.decode(params[:search]) ),
       :star => true,
       :per_page => params[:per_page],
       :page => params[:page],
       :ranker => :sph04,
       :match_mode => :phrase,
       :order => ('death_date DESC')

我想要实现的是首先在列表中的完全匹配。 现在,当我搜索“安娜”时,我会像“安娜”之前的“汉娜”,“安娜 - 丽莎”一样混淆。 当我删除'order'时,它甚至更糟。我尝试过几个没有运气的跑步者和马赫模式。 如果我得到精确的马赫并按其他属性(日期)排序,以及其后的其他匹配,也按日期排序,那将是完美的。

现在只有我头脑中的解决方案是按结果长度排序(更接近完全匹配),但也许有更好的解决方案?

任何线索如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

   :order => ('death_date DESC')

那将完全忽略'权重',并且只按该属性排序。

按特定值排序,按重量排序很难。 可以看一下基于分段的混合系统 http://sphinxsearch.com/blog/2010/06/27/doing-time-segments-geodistance-searches-and-overrides-in-sphinxql/

  

我像“汉娜”一样混在一起,

如果你匹配,听起来就像你以某种方式将enable_star设置为0。和/或expand_keywords(这些是sphinx配置选项,不知道如何将其转换为thinkingSphinx。)

..关闭它们,应该只允许“在匹配时”。

在这种情况下,应该会得到更好的结果。除此之外,尽管SPH04旨在促进“精确领域”的比赛,但我发现它并没有那么好用。可以和定制的大学生一起玩。

或者 http://sphinxsearch.com/forum/view.html?id=1923 有一些方法可以稍微操纵一下查询,以促进结果。