sql >> Database >  >> RDS >> Mysql

sfinx zoeken naar gedeeltelijke trefwoordovereenkomsten

Een manier is om een ​​woordentelling op te slaan in de sphinx-index als attribuut.

sql_field_str2wordcount is een goede manier om dit te doenhttp://sphinxsearch.com /docs/current.html#conf-sql-field-str2wordcount

U kunt het dan gebruiken als basis voor een 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, ik weet niet hoe ik dit moet doen met name in Thinking-sphinx. Het bovenstaande is de PHP API-syntaxis)

Bewerken, controleren http://freelancing-god.github.com/ts/ nl/zoeken.html en http://freelancing-god.github.com/ts/ nl/common_issues.html#or_attributes

lijkt op zoiets als

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}


  1. Door komma's gescheiden tekenreeks splitsen --> FUNCTIE db.CHARINDEX bestaat niet

  2. Scala Spark-type komt niet overeen Eenheid, vereist rdd.RDD

  3. Beperk de grootte van een verzameling in JPA

  4. mysql-query selecteren zoals met diakritische Turkse letters