b 问题: 现在,我应该知道有多少个关键字会在标题表。 (例如,在android三星银河王牌黑手机中的三星银河王牌3) 我该如何解决这个问题?。狮身人面像处理这个?如果不是该做什么? 解决方案一种方法是将sphinx索引中的wordcount作为属性存储。 sql_field_str2wordcount是一个很好的方法来做到这一点 http://sphinxsearch.com/docs/current.html#conf-sql-field-str2wordcount 然后,您可以将其用作过滤器的基础。 $ cl-> setMatchMode(SPH_MATCH_EXTENDED); $ cl-> setRankingMode(SPH_RANK_WORDCOUNT); $ cl-> setSelect(*,IF(@ weight => titles,1,0)as myfilter); $ cl-> setFilter(myfilter,array(1)); $ cl->查询(\$ search_key \/ 1,标题); (对不起,不知道如何在思维上做到这一点-sphinx particully。以上是PHP API语法) 编辑,检查 http://freelancing-god.github.com/ts/en/searching.html 和 http://freelancing-god.github.com/ts/en/common_issues.html#or_attributes 看起来可能类似于 with_display =*,IF(@ weight => ;标题,1,0)AS显示 Title.search'search_key / 3',:match_mode => :extended,:rank_mode => :wordcount,:sphinx_select => with_display,:with => {'display'=> 1} Ruby on Rails -> ThinkingSphinx -> SphinxSearch -> MysqlI want to search the titles table. The expected user keyword will not be an exact match, it will be a partial match.search_key = "android samsung galaxy ace black phones"Searching against the titles table,titles(table)id | titles1 | nokia c62 | samsung galaxy ace3 | samsung galaxy ace y4 | nokia lumia 8005 | samsung monte6 | samsung galaxy notecase - 1 : Title.search search_key, :match_mode => :all=>No resultsComment: Badcase -2 :Title.search search_key, :match_mode => :any=>[samsung galaxy ace, samsung galaxy ace y, samsung monte, samsung galaxy note]Comment: OK, but not relevant, the user wanted only "samsung galaxy ace" which she specified in her keywords explicitly. Why show other samsung mobiles ?case -3 :Title.search 'search_key/3',:match_mode => :extended=> samsung galaxy aceComment: Bingo!, but hard coded.Question:Now, I should know how many number of keywords will get an exact match in the titles table. (For example, its 3 for "samsung galaxy ace" in "android samsung galaxy ace black phones")How do I go around this?. Sphinx handles this?. If not what to do ? 解决方案 One way is to store a wordcount in the sphinx index as attribute.sql_field_str2wordcount is a good way to do thishttp://sphinxsearch.com/docs/current.html#conf-sql-field-str2wordcountYou can then use it as a basis of a filter$cl->setMatchMode(SPH_MATCH_EXTENDED);$cl->setRankingMode(SPH_RANK_WORDCOUNT);$cl->setSelect("*,IF(@weight=>titles,1,0) as myfilter");$cl->setFilter("myfilter",array(1));$cl->Query("\"$search_key\"/1",'Title');(Sorry, dont know how to do this in thinking-sphinx particully. The above is the PHP API syntax)Edit, checking http://freelancing-god.github.com/ts/en/searching.html and http://freelancing-god.github.com/ts/en/common_issues.html#or_attributeslooks like might be something like with_display = "*, IF(@weight=>titles,1,0) AS display"Title.search 'search_key/3', :match_mode => :extended, :rank_mode => :wordcount, :sphinx_select => with_display, :with => {'display' => 1} 这篇关于狮身人面像搜索部分关键字匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 09-15 11:35