
- WindowséçºãšLinuxãããã¯ã·ã§ã³çšã®åäžãã¡ã€ã«æ§æã®äœæ
- SetMatchModeïŒSPH_MATCH_EXTENDED2ïŒããã³SPH_MATCH_ANYãªã©ãå®éã®æ€çŽ¢ã«é©ããªãçç±
- SetSortModeïŒSPH_SORT_RELEVANCEïŒãSetFieldWeights-é¢é£æ§ã«ãããœãŒããšã€ã³ããã¯ã¹ãã£ãŒã«ãã®éã¿ã®èšå®
- SetLimitsïŒ0.20ïŒ-åºåã®å¶é
- AddQueryãRunQueries-è€æ°ã¯ãšãªã®æ§ç¯
- SetFilterãResetFilters-ãã«ãã¯ãšãªã«ãã£ã«ã¿ãªã³ã°ãè¿œå ããŠãåä¿¡ããããŒã¿ãå¶éããŸã
- åèªåœ¢åŒ-å矩èªã䜿çšãããCïŒããªã©ã®éæšæºã®åèªåœ¢åŒã®å¶éãå æãã
ãŸãããããžã§ã¯ãã¯ãã·ã¢èªã話ãããã°ã©ããŒã«ãã£ãŠäœæããããµããŒããããŠãããšããäºå®ã«ããããããããããžã§ã¯ãã®éçºãšççŽã«èšã£ãŠäžååãªãã·ã¢ã®ããã¥ã¡ã³ãã«è²¢ç®ããããšæããŸãã ãã®ãããã¹ãã£ã³ã¯ã¹ã®äžè¬çãªéçºè ãšãŠãŒã¶ãŒã®Andrei Aksyonov aka shodanã«æè¬ãã代ããã«ãé²è¡äžã®ã¿ã¹ã¯ã®ãããã«ãŒããã©ã¬ã¹ããééããããšã決å®ãããŸããããã®èšäºãæžããŠããŸãã
1.ã¯ããã«
SphinxããŸã ã€ã³ã¹ããŒã«ãããŠããããéå§ãããå Žåã¯ãåå¿è åãã®èšäºãžã®ãªã³ã¯ïŒ Sphinx + phpã§çŽ¹ä»æ€çŽ¢ãšã³ãžã³ãäœæããŸãã autoklad.biz/?action=searchã§ããã®æ€çŽ¢ã®åäœããã¹ãããŠç¢ºèªã§ããŸãã
ç§ãã¡ã®æ€çŽ¢ã¢ãžã¥ãŒã«ã¯ããŒã¿ãã¹ãäžã§ããããšãããã«èšããªããã°ãªããŸããïŒããå€ãã®ã©ããšããžãæœåšçãªããŒã«ããã®ä»ã®æããã§ã¯ãªããã°ããããŸãããµã€ãã®å€æ°ã®ãŠãŒã¶ãŒããã®å®éã®ãªã¯ãšã¹ãã
èªåè»éšåããŸãã¯éšåã®ãªã³ã©ã€ã³ã¹ãã¢ã®è²©å£²ã§ã¯ãåœç€Ÿã¯é·ãéãå®ãã®ããéåžžã«æåããåŸäºããŠããŸãã ããããããã€ãã®çç±ãããé¢é£ããæ€çŽ¢ãå¿ èŠã«ãªã£ãã®ã¯ä»ã ãã§ãã æãå¯èœæ§ãé«ãäž»ãªçç±ã¯ããã«ããã¹ãæ€çŽ¢ãã»ãšãã©ã®éšåã«é©ããŠããªãããšã§ãã ãããããããéåžžã«å¿ èŠãšãããååã®5-10ïŒ ãããããããªãã§ã¯æ¹æ³ã¯ãããŸããã ãŸããæ¬è³ªçã«çŽæ¥çãªã¯ãã¹ãªã³ã¯ã䜿çšããtecdocããæ確ãªã¢ãã«ãšè»ã®ãã©ã³ããæå®ããæšæºæ€çŽ¢ã¯ããã®è£œåã°ã«ãŒãã§ã¯æ©èœããŸããã ãã®ãããªãééã£ããååã®äŸïŒãªã€ã«ãã¿ã€ã€ãããããªãŒãªã©ã
æ®éã®å°ããªäŒç€Ÿã®ã¹ãã¢ããŒãã®å¹³åäŸ¡æ Œè¡šã¯200ã1000äžããžã·ã§ã³ã§ããããããããã®ããŒã¹ã®10ïŒ ã§ãããå¿ èŠãªããŒã¿ãå æããŸãã ã€ãŸãã以äžã®äŸã®ã€ã³ããã¯ã¹ã¯çŽ30äžä»¶ã®ããã¥ã¡ã³ãã«åºã¥ããŠæ§ç¯ãããŠããŸãã
2. Windowséçºããã³Linuxå®çšŒåOSçšã®åäžã®æ§æãã¡ã€ã«ã®äœæ
解決ãã¹ãåé¡-éçºè ã®ãã·ã³ã®æ§æãã¡ã€ã«ãšãµãŒããŒã®ãããã¯ã·ã§ã³ã¯ç°ãªããŸããéçºäžã¯ãäžå®å®ãªæ§é ãè¿ éã«æŽæ°ãããããã®sphinxæ§æã絶ããå€æŽããå¿ èŠããããŸãã ç§ãã¡ã®å ŽåããµãŒããŒäžã®ãããã®èšå®ãå¥ã®éçºããŒã ã®å¥ã®ãããžã§ã¯ããšå ±æããå¿ èŠããããšããäºå®ã«ãã£ãŠæªåãããinclude * .confããªã©ã®ã»ã¯ã·ã§ã³ã¯ãŸã ã¹ãã£ã³ã¯ã¹ã§æäŸãããŠããŸããã
ããŒã«ã«Windowsãã·ã³ã§ã¯ãæ§æã¯ãDïŒ\ Sphinx \ sphinx.confãããµãŒããŒã§ã¯ã/etc/sphinx/sphinx.confããLinuxãã·ã³ã§ã¯Search-> CreateConfigFileïŒïŒã¹ã¯ãªããã«ãã£ãŠæŽæ°ããããã¡ã€ã«ãžã®ã·ã³ããªãã¯ãªã³ã¯ã§ãã /var/www/autoklad.com.ua/imgbank/sphinx/sphinx.confã ããŒã«ã«ãã¡ã€ã«ã¯ãè¿é£ã«å¹²æžããªãããããã©ã«ããŒã«å¯ŸããŠçŽæ¥æŽæ°ãããŸãã
ã¡ãœããã®ãœãŒã¹ã³ãŒãïŒ
public function CreateConfigFile() { $sConfigFilePath=Db::GetConstant('sphinx:config_file_path',SERVER_PATH.'/imgbank/sphinx/'); $sConfigFileName='sphinx.conf'; $sConfigTemplate=Db::GetConstant('sphinx:config_template','production'); if (!file_exists($sConfigFilePath)) mkdir($sConfigFilePath); $sTopSection.=$this->GetPriceGroupConfig(); Base::$tpl->assign('sTopSection',$sTopSection); $sFileContent=Base::$tpl->fetch($this->sPrefix.'/config_sphinx_'.$sConfigTemplate.'.tpl'); file_put_contents($sConfigFilePath.$sConfigFileName,$sFileContent); } private function GetPriceGroupConfig() { Base::$tpl->assign('sDataFilePath',Base::GetConstant('sphinx:data_file_path','/var/data/')); return Base::$tpl->fetch($this->sPrefix.'/config_price_group.tpl'); }
config_price_group.tplãã³ãã¬ãŒããæ®ãã¯èšäºãåŒã䌞ã°ããªãããã«ã¢ãŒã«ã€ãã«ãããŸã
source price_group {ldelim} type = mysql sql_host = {$aDbConf.Host} sql_user = {$aDbConf.User} sql_pass = {$aDbConf.Password} sql_db = {$aDbConf.Database} sql_query_pre = SET NAMES utf8 sql_query_pre = SET CHARACTER SET utf8 sql_query = \ select p.id \ , p.code as code \ , c.title as brand \ , if(ifnull(cp.name_rus,'')<>'', cp.name_rus, ifnull(p.part_rus,'')) as part_name \ , pgr.name as price_group_name \ , p.id_price_group as id_price_group \ from price as p \ left join cat_part as cp on cp.item_code=p.item_code \ inner join cat as c on p.pref=c.pref \ inner join provider_virtual as pv on p.id_provider=pv.id_provider \ inner join user_provider as up on pv.id_provider_virtual=up.id_user \ inner join provider_group as pg on up.id_provider_group=pg.id \ inner join user as u on up.id_user=u.id and u.visible=1 \ inner join currency as cu on up.id_currency=cu.id \ inner join price_group as pgr on pgr.id=p.id_price_group \ where 1=1 sql_attr_uint = id_price_group sql_query_info = SELECT * FROM price WHERE id=$id {rdelim} index price_group {ldelim} source = price_group path = {$sDataFilePath}price_group/index morphology = stem_ru min_word_len = 3 charset_type = utf-8 min_infix_len = 3 #min_prefix_len = 3 enable_star = 1 {rdelim}
ãã¥ãŒã«ãã£ãŠã¯ãšãªãç°¡çŽ åã§ããŸãããç§ãç解ããŠããéãããããè¡ãããšã¯ãå§ãã§ããŸããããŸããçµåã䜿çšããããŒã¿ãžã®çŽæ¥ã¯ãšãªã¯ãã€ã³ããã¯ã¹äœææã®è² è·ã®çç±ã§ããå¹æçã§ãã
ããŒã«ã«ãµã€ãã®ããŒã¿ããŒã¹ããååŸãããå®æ°ã®å€
sphinx:data_file_path D:/Sphinx/data/ sphinx:config_template local sphinx:config_file_path D:/Sphinx/
ãµã€ã補åã®ããŒã¿ããŒã¹ããååŸãããå®æ°ã®å€
sphinx:data_file_path /var/data/ sphinx:config_template production sphinx:config_file_path /var/www/autoklad.com.ua/imgbank/sphinx/
ããŒã«ã«ã¹ãã£ã³ã¯ã¹ã®äœæ¥ã®çµæã次ã®ãããªæ§æãã¡ã€ã«ãã§ããŸããã
http://www.mstarproject.com/temp/3/sphinx/sphinx.conf
3. SetMatchModeïŒSPH_MATCH_EXTENDED2ïŒããã³SPH_MATCH_ANYãªã©ãå®éã®æ€çŽ¢ã«é©ããªãçç±
圢æ ãæ©èœããã¯ãšãªãCastrol 5W40 oilsãã«ã¯ãããã¹ããOilããšã15W40ãã®ããã¥ã¡ã³ãããããŸããã*ãèšå·ã䜿çšããåèªãoilsãã§æ€çŽ¢ããå¿ èŠããããŸãããã®ããã«ã¯ãã¯ãšãªãã«ããŒãå¿ èŠã§ãã ãSPH_MATCH_EXTENDED2ãã¢ãŒãã§ãã SPH_MATCH_EXTENDEDããããŸãããç§ãç解ããŠããããã«ãããã¯å€ãããŒãžã§ã³ã§ãããã¢ãŒãã®æ°ããããŒãžã§ã³ã䜿çšããããšããå§ãããŸãã
SPH_MATCH_ANYã¢ãŒãã§ã¯ãã¯ãšãªå ã®åèªãå¢ãããšçµæã®æ°ãæžãããšãå®çŸããããšã¯ã§ããŸããã SPH_MATCH_ALLã¢ãŒãã§ã¯ãéšåçãªåºçŸãšåèªåœ¢åŒã«ããã¢ãŒãã®åææäœãå®çŸããããšã¯ã§ããŸããã 䟿å©ã«ãªããŸã§ä»ã®ã¢ãŒããäœæ°ãªãèŠãŠããã®ã§ããããã«ã€ããŠã¯äœãèšããŸããã
ãCastrol 5W40 oilããšãããã¬ãŒãºã§ã®ã¹ãã£ã³ã¯ã¹ãžã®ãªã¯ãšã¹ãã¯æ¬¡ã®ããã«ãªããŸãã
( | **) & (Castrol | *Castrol*) & (5W40 | *5W40*)
éèŠïŒäœ¿çšãããã€ã³ããã¯ã¹ã®èšå®ã«ã¯2è¡ãå¿ èŠã§ãïŒ
min_infix_len = 3 enable_star = 1
æåã®æ¹æ³ã§ã¯ãå³åŽãšå·ŠåŽã®åèªã®éšåçãªåºçŸãã€ãŸãåèªã®æ«å°Ÿãšå é ããæ€çŽ¢ã§ããŸãã 2è¡ç®ã§ã¯ããªã¯ãšã¹ãã§ã*ãã䜿çšã§ããŸãã ããšãã°ãåèªã®å·ŠåŽïŒå é ããïŒã®åºçŸã®ã¿ãå¿ èŠãªå Žåã¯ãmin_prefix_lenã䜿çšã§ããŸãã
å ¥åæååãåŠçããæ£ãããªã¯ãšã¹ããçæããé¢æ°ïŒ
private function GetSphinxKeyword($sQuery) { $aRequestString=preg_split('/[\s,-]+/', $sQuery, 5); if ($aRequestString) { foreach ($aRequestString as $sValue) { if (strlen($sValue)>3) { $aKeyword[] .= "(".$sValue." | *".$sValue."*)"; } } $sSphinxKeyword = implode(" & ", $aKeyword); } return $sSphinxKeyword; }
ã¯ãšãªçµæã¯ã http ïŒ //autoklad.biz/ïŒaction = searchïŒsearch [query {=ïŒ D0ïŒ BCïŒ D0ïŒ B0ïŒ D1ïŒ 81ïŒ D0ïŒ BBïŒ D0ïŒ BEïŒ 20CastrolïŒ 205W40ïŒsearch [id_price_group]ã§ãã¹ãã§ããŸãã = 35
æ€çŽ¢çµæã®äžã«ãçµæã®é åãè¿ãããŸããããã¯ãåŠçã®ããã®ã¹ãã£ã³ã¯ã¹ãè¿ããŸã-[words]ã»ã¯ã·ã§ã³ã«æ³šæããŠãã ããã ãã®ä»ã®ã»ã¯ã·ã§ã³ãåæ§ã«éèŠã§ããããããã«ã€ããŠã¯ãŸã 話ããŠããŸããã
ãŸãããã©ãŒã©ã ãšéçºè ã®ãŠã§ããµã€ãã§éåžžã«ãããã質åã¯ãããã¬ãŒãºã®æ£ç¢ºãªåºçŸåæ°ãå¢ããæ¹æ³ãã§ããã€ãŸããããã¥ã¡ã³ããWanted_wordãã®éã¿ã¯ãWanted_wordããã³å€ãã®ããã¹ãããããé«ããªããŸãã åç-SPH_RANK_SPH04ã䜿çšããå¿ èŠããããŸããSPH_RANK_SPH04ã¯ããã®å žåçãªã¿ã¹ã¯ã®ããã«ç¹å¥ã«äœæããããã®ã§ãã
4. SetSortModeïŒSPH_SORT_RELEVANCEïŒãSetFieldWeights-é¢é£æ§ã«ãããœãŒããšã€ã³ããã¯ã¹ãã£ãŒã«ãã®éã¿ã®èšå®
ãã®ã¡ãœããã¯ãã¹ãã£ã³ã¯ã¹ã«ãã£ãŠè¿ãããããŒã¿ã®ãœãŒããããé åã®äžã§ãã©ã®çµæãããé«ããã決å®ããŸãã SPH_SORT_RELEVANCEã®å Žåãçµæã¯ãããããœãŒããããŸãã ãé¢é£æ§ãã é¢é£æ§ã¯ãæãŸãªãéããçŽç²ã«ç®è¡èŠåã«åŸã£ãŠæ©èœããGoogleãYandexã®æ€çŽ¢ãšã¯ç°ãªããŸãã ã€ãŸããéæ³ã®ãããªãã®ã§ã¯ãããŸãããã€ã³ããã¯ã¹ã®éã¿ããã£ãŒã«ãã®éã¿ãããã¥ã¡ã³ãå ã§ã®æ€çŽ¢ã¯ãŒãã®åºçŸåæ°ãããã³ä»ã®ããã¥ã¡ã³ãå ã§ã®ãã®ã¯ãŒãã®é »åºŠã®ä¹ç®ãšå ç®ã
æãåçŽãªã±ãŒã¹ã§ã¯ãã€ã³ããã¯ã¹ãã£ãŒã«ãã®å ¥åãŠã§ã€ããèšå®ããŸãã
$oSphinxClient->SetFieldWeights(array ( 'code' => 50, 'brand' => 40, 'part_name' => 10, 'price_group_name' => 5, ));
åºåã§ã¯ããé¢é£æ§ã=ãç·ééãã§ãœãŒããããé åãååŸããŸããããã§ãééã¯æŽæ°å€ã§ãã ãããã®æ°å€ã¯ãèªåèªèº«ã®é¢é£æ§ã調æŽããããšã§å¶åŸ¡ã§ããŸããã€ãŸããããéèŠãªãã£ãŒã«ãã«ã¯ããå€ãã®éã¿ãå²ãåœãŠãå¿ èŠããããŸãã ãã®äŸã§ã¯ãæãéèŠãªãã£ãŒã«ãã¯ã³ãŒãcodeã§ãã
5. SetLimitsïŒ0.20ïŒ-çµæã®åºåã®å¶é
ãã®æ¹æ³ã¯æãç°¡åã§ãMaysklevskyã®å¶é0.20ãšåæ§ã«æ©èœããããã«å¿ããŠå¿ èŠã§ããã€ãŸããã¹ããããŒãæ§ç¯ããããã®åå²ããŒã¿ãååŸããŸãã ãã®ãããžã§ã¯ãã§ã¯ãæåã®20ïŒäžå®ïŒã®çµæãå¿ èŠã§ãã3ã€ä»¥äžããå Žåããã以äžã®æé ã¯ãããŸããã
6. AddQueryãRunQueries-è€æ°ã¯ãšãªã®æ§ç¯
Multiseriesã¯ãã¹ãã£ã³ã¯ã¹ã«1ã€ã®ãªã¯ãšã¹ãã§ã¯ãªããè€æ°ã®ãªã¯ãšã¹ããéä¿¡ããå¿ èŠãããå Žåã«ããªã¯ãšã¹ãããããåŠçããããã®éåžžã«äŸ¿å©ãªãœãªã¥ãŒã·ã§ã³ã§ãã ãã®äŸã§ã¯ããã¹ãŠã®ããŒãã°ã«ãŒãã«åããªã¯ãšã¹ããéä¿¡ããŠãã°ã«ãŒãã®ãªã¹ããšåã°ã«ãŒãã®ã¬ã³ãŒãæ°ãååŸããŸãã ã€ãŸããçŽ100件ã®ãªã¯ãšã¹ããéä¿¡ããã1ã€ã®çµæãsphinxãžã®1ã€ã®æ¥ç¶ã§è¿ãããŸãã ãŸãã1ã€ã®ãªã¯ãšã¹ãããã±ãŒãžã§èš±å¯ãããåæãªã¯ãšã¹ãã®æ倧32åã®ãå¶éããã解決ããããŸããã
ã³ãŒãäŸïŒ
$aPriceGroup=Db::GetAll(Base::GetSql("Price/Group",array( 'visible'=>1, "where"=>" and pg.code_name is not null", ))); if ($aPriceGroup) { $aResultAll=array(); $i=0; foreach ($aPriceGroup as $aValue) { $oSphinxClient->SetFilter('id_price_group', array($aValue['id'])); $iQuery = $oSphinxClient->AddQuery($sSphinxKeyword, 'price_group'); $oSphinxClient->ResetFilters(); $bAddedUnrunQuery=true; $aPriceGroupAssoc[$iQuery+(32*$i)]=$aValue; if ($iQuery && !($iQuery % 31) ) { $aResultQuery=$oSphinxClient->RunQueries(); $aResultAll=array_merge($aResultAll,$aResultQuery); $sLastError=$oSphinxClient->GetLastError(); $i++; $bAddedUnrunQuery=false; } } if ($bAddedUnrunQuery) { $aResultQuery=$oSphinxClient->RunQueries(); $aResultAll=array_merge($aResultAll,$aResultQuery); } }
é²è¡äžã®ã¿ã¹ã¯ã«ã¯æéããã£ããããéå§æã«ãã¹ãŠã®è€éãªèŠæ±ãæãäžããããã«ãã¿ã¹ã¯ã¯èšå®ãããŸããã§ããã ãããã£ãŠãmysqlã®group byã«äŒŒããã°ã«ãŒãåããããã¯ãšãªã®åé¡ã解決ããèªè»¢è»ãããããæžããã§ãããã äžæ¹ãã¹ãã£ã³ã¯ã¹ã®ã°ã«ãŒãåãç解ããå Žåããã«ãã¯ãšãªã䜿çšã§ããäŸã¯ãããŸããã
ãã®ãããã³ã¡ã³ãã§ã¯ãããæ£ç¢ºãªãªã¯ãšã¹ãã®äŸãæè¿ããŸãããããã¯ã¹ãã£ã³ã¯ã¹ã®ã°ã«ãŒãåã«ãããã®ã§ãã
7. SetFilterãResetFilters-ãã«ããªã¯ãšã¹ãã«ãã£ã«ã¿ãªã³ã°ãè¿œå ããŠãåä¿¡ããŒã¿ãå¶éããŸã
ãã£ã«ã¿ãŒã䜿çšããã«ã¯ãæåã«ãã£ã«ã¿ãŒã䜿çšãããã£ãŒã«ããã€ã³ããã¯ã¹ã€ã³ããã¯ã¹ãã£ãŒã«ãã«ç»é²ããå¿ èŠããããŸãã ãã®äŸã§ã¯ãããã¯id_price_groupãã£ãŒã«ãã§ãã
sql_attr_uint = id_price_group
ãããã£ãŠãã³ãŒãã¯æ¬¡ã®ããã«äœ¿çšãããŸãã
foreach ($aPriceGroup as $aValue) { $oSphinxClient->SetFilter('id_price_group', array($aValue['id'])); $iQuery = $oSphinxClient->AddQuery($sSphinxKeyword, 'price_group'); $oSphinxClient->ResetFilters(); //... }
ã€ãŸããforeachã«ãŒãã§ã¯ããã«ããªã¯ãšã¹ãå ã®åãªã¯ãšã¹ãã«å¯ŸããŠããã£ã«ã¿ãŒãæåã«èšå®ãããè¿œå åŸã«ä»ã®ãªã¯ãšã¹ãã«å¯ŸããŠæ©èœããªãããã«ãªã»ãããããŸãã ç§ã®æèŠã§ã¯ããã¹ãŠãè«ççã§æçœã§ãããå°é£ã¯çããªãã¯ãã§ãã
8.åèªåœ¢åŒ-å矩èªã䜿çšãããCïŒããªã©ã®éæšæºã®åèªåœ¢åŒã®å¶éãå æãã
ã·ããã ãšéæšæºã®ïŒç¬èªã®ïŒåèªåœ¢åŒãæ©èœãããã«ã¯ã次ã®åèªåœ¢åŒã®ãã¡ã€ã«ãã€ã³ããã¯ã¹æ§æã«å«ããå¿ èŠããããŸãã
wordforms = D:\Sphinx\data\wordforms.txt
ãã¡ã€ã«èªäœã«ã¯ãããšãã°ãUTF-8ãšã³ã³ãŒãã£ã³ã°ã®ããŒã¿ã»ãããå«ãŸããŠããå ŽåããããŸãã
bosh > bosch > bosch CASTROL > CASTROLL > CASTROLL > CASTROLL
ã€ãŸããå·ŠåŽã«ã¯ãã¹ãŠã®å¯èœãªå矩èªããããŸã-ãããã®åèªã®å³åŽã®æå³ã ããã«ãããšãã°ããboschããæ¢ã«å³åŽã«ããå Žåãå·ŠåŽã«ããã¹ãã§ã¯ãããŸããã å°ãªããšããããè¡ãããå Žåãæ€çŽ¢ã¯æåŸ ã©ããã«åäœããŸããã
ãã®äŸã§ã¯ããCastrol 5W40 oilããšããã¯ãšãªã䜿çšã§ããŸããããCastrol 5W40 oilããšåãããšãããããŸãã ãCïŒãã®äŸã§ã¯ãæšæºã®ã€ã³ããã¯ã¹ã¹ããŒã ã«åŸã£ãŠåŠçããããèšå®ãããšããã«æåã§åäœããããã«ããã®ãããªéæšæºã®åèªåœ¢åŒãå«ããå¿ èŠããããŸãã ãããžã§ã¯ãå ã®ãã¬ãŒãºã®æå³ãæ£ç¢ºã«ç¥ã£ãŠããã®ã¯ããªãã ãã§ããããšãã°ããCïŒã=ããã¥ãŒãžã·ã£ã³ã®Cã·ã£ãŒãã®åã
ãµãŒããŒäžã®èšå®ãã¡ã€ã«ãšãµã³ãã«ã«ã¯ãã®ãããªæ©èœã¯ãããŸããããµã³ãã«ã®ã¿ãæäŸãããŠããŸããããããžã§ã¯ãå矩èªã®æ¢åã®æ§é ã«ã¯ãŸã å®è£ ãããŠããŸããã
ãœãŒã¹ã³ãŒããã¢ãŒã«ã€ãã䟿å©ãªãµã€ããžã®ãªã³ã¯
*è±èªä»¥å€ã®èšèªãå«ãéå ¬åŒã®Wikiããã¥ã¡ã³ãhttp://sphinxsearch.com/wiki/doku.php
*èªåè»éšåã®äŸã®åãæšãŠããããœãŒã¹ã³ãŒãã®ã¢ãŒã«ã€ãhttp://www.mstarproject.com/temp/3/sphinx/sphinxsearch_soruce.zip
*ããªãã³ã°ãããããŒã¿ããŒã¹ã®äŸã®æ§é ã®ã¢ãŒã«ã€ãhttp://www.mstarproject.com/temp/3/sphinx/sphinxsearch_db_structure.zip
*ããŒã¿http://www.mstarproject.com/temp/3/sphinx/sphinxsearch_db_data.zipãå«ãåãæšãŠããããµã³ãã«ããŒã¿ããŒã¹ã®ã¢ãŒã«ã€ãïŒ43 MBïŒ
*ã¹ãã³ãµãŒãªã³ã¯ã«ããã¹ãã³ãµãŒïŒ tecdoc + sphinxsearchãªã³ã©ã€ã³ã¹ãã¢éçº
ç§ã¯å»ºèšçãªæ¹å€ã«åãã§ã質åã«çããããšããŸãã ã»ãšãã©ã®å Žåããµã³ã¯ãããã«ãã«ã¯ã§ã®äŒè°ã«ã¯åå ããŸãããéåžžã«äžå¿«ãªãã©ã€ãã§ãããå¬ã§ããããŸãã ç§ã¯ãã®èšäºããããå€ãã®å©çããããšå€æãããŠã¯ã©ã€ãã®ã¹ãã£ã³ã¯ã¹ã®èè ãšäŒãããšãã§ããŸãããã åŸ ã€å¿ èŠããããŸãã