我有很简单的想法狮身人面像设置:
的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'时,它甚至更糟。我尝试过几个没有运气的跑步者和马赫模式。 如果我得到精确的马赫并按其他属性(日期)排序,以及其后的其他匹配,也按日期排序,那将是完美的。
现在只有我头脑中的解决方案是按结果长度排序(更接近完全匹配),但也许有更好的解决方案?
任何线索如何解决这个问题?
答案 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 有一些方法可以稍微操纵一下查询,以促进结果。