2016-08-18 63 views
0

我有很简单的思维狮身人面像设置:思考狮身人面像 - 不能得到准确的匹配第一

的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') 

我试图做到的,是准确的首先匹配在名单上。 现在,当我搜索“安娜”时,我会在“安娜”之前混合使用“Hanna”,“Anna-Lisa”。 当我删除'订单'时甚至更糟。我已经尝试了几个rankers和mach模式,但没有运气。 这将是完美的,如果我得到精确的马赫在顶部,并按其他属性(日期)和其他匹配排序,也按日期排序。

现在我唯一想到的解决方案是按结果长度排序(更接近精确匹配),但也许有更好的解决方案?

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

回答

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(这些是狮身人面像配置选项,不知道如何翻译成思维狮身人面像。)

..把这些关闭,应该只允许'while word matches'。

在这种情况下,应该得到更好的结果。除此之外,即使SPH04是为了促进'精确场'比赛,我不觉得它的作品一切都很好。可以与定制跑步者一起玩。

http://sphinxsearch.com/forum/view.html?id=1923 有一些方法来操纵查询一点,以促进结果。