Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ʹÓà PHP ºÍ Apache Solr ʵÏÖÆóÒµËÑË÷
 
×÷ÕߣºMartin Streicher À´Ô´£ºIBM ·¢²¼ÓÚ 2016-7-15
  3085  次浏览      27
 

ÔÚ ¡°Óà PHP ¹¹½¨×Ô¶¨ÒåËÑË÷ÒýÇæ¡± ÖУ¬ÎÒ½áºÏʹÓà PHP Ó뿪Դ Sphinx ËÑË÷ÒýÇæ´´½¨ÁËÎı¾Ãܼ¯ÐÍÊý¾Ý¿â²éѯµÄ¿ìËÙ±¸Ñ¡·½·¨£¬ÀýÈç MySQL ÖÐµÄ LIKE ºÍ MATCH£¨Òª»ñµÃÓë Sphinx Ïà¹ØµÄÐÅÏ¢£¬Çë²ÎÔÄ ²Î¿¼×ÊÁÏ£©¡£

Sphinx ·Ç³£Ò×ÓÚ°²×°ºÍά»¤£¬²¢ÇÒ¹¦ÄÜÊ®·ÖÇ¿´ó¡£¶øÇÒ£¬Sphinx µÄ×îа汾ÏÖÔÚÌṩÁËÒ»¸ö±¾»ú MySQL ÒýÇæ£¬²»ÐèÒªÔËÐжÀÁ¢µÄ Sphinx ÊØ»¤½ø³Ì¡£V0.9.8£¨×«Ð´±¾ÎÄʱµÄ×îа汾£©»¹Ìí¼ÓÁ˵ØÀí¾àÀ루geodistance£©²éѯ£¬ÓÃÓÚ²éÕÒÔÚ¸ø¶¨Î»ÖõÄij¸ö¾àÀ뷶ΧÄڵļǼ£»²¢Ìí¼ÓÁËÃûΪ¶à²éѯ£¨multi-query£©µÄ¹¦ÄÜ£¬ËüÊÇÔÚµ¥Ò»ÍøÂçÁ¬½ÓÖа󶨶à¸ö²éѯºÍ½á¹û¼¯µÄÓÅ»¯¹¦Äܹ¦ÄÜ¡£

Sphinx Ò»Ö±ÒÔÀ´²»¶Ï¸Ä½ø£¬²¢ÇÒÊǹºÎïÕ¾µã¡¢²©¿ÍºÍÐí¶àÆäËûÓ¦ÓóÌÐòµÄÀíÏëÑ¡Ôñ¡£¸ù¾Ý Sphinx Õ¾µãµÄÊý¾Ý£¬Ò»¸öÓ¦ÓóÌÐòÏÖÔÚ½«Ë÷Òý 700 °ÙÍò¸öÎĵµ£¬»òÕßË÷Òý´óÔ¼ 1.2 °ÙÍòÕ××Ö½ÚÊý¾Ý¡£Òò´Ë£¬ÎÒºÁ²»ÓÌÔ¥µØÏòÄúÍÆ¼ö Sphinx¡£

µ« ÊÇ£¬µ±Ó¦ÓóÌÐò»òÕ¾µã±äµÃÔ½À´Ô½Á÷ÐС¢Ê¹ÓÃÁ¿Öð²½Ôö¼Óʱ£¬Sphinx ¿ÉÄÜÎÞ·¨ÌṩÏàÓ¦µÄ¼¸ÏÄÜ¡£ÓÈÆäÊÇ£¬Sphinx ÈÔÈ»²»Äܹ»×Ô¶¯¸´ÖÆ»ò·Ö·¢ÆäË÷Òý£¬Ê¹ÆäÊØ»¤½ø³Ì³ÉΪµ¥µã¹ÊÕÏ£¨×÷Ϊ½â¾ö·½·¨£¬¼¸Ì¨¼ÆËã»ú¿ÉÒÔË÷Òýͬһ¸öÊý¾Ý¿â£¬²¢ÇÒ¿ÉÒÔ½«ÕâЩϵͳ¾ÛºÏÔÚÒ»Æð£©¡£ Sphinx ²»Í»³öÏÔʾËÑË÷½á¹û£¨Èç Google ÔÚÏÔʾ»º´æÒ³ÃæÊ±Ëù×öµÄ²Ù×÷£©£¬²»±£Áô»ò»º´æ×î½üËÑË÷µ½µÄ½á¹û£¬²¢ÇÒ²»Ö§³ÖÕýÔò±í´ïʽ (regex) »òÓëÈÕÆÚÏà¹ØµÄ²Ù×÷¡£

Èç¹ûҪѰÕÒÄÇЩ¹¦ÄÜ»òÕß×¼±¸²ÉÓÃÆóÒµ¼¶½â¾ö·½°¸£¬Ç뿼ÂÇ Apache Software Foundation µÄ Solr ÏîÄ¿¡£»ùÓÚ Lucene ËÑË÷ÒýÇæ²¢ÇÒÔÚ Apache Software License Ðí¿ÉÏÂÒÔ¿ªÔ´ÐÎʽÌṩ£¬Solr ÊÇ£¨¸ù¾Ý Lucene Õ¾µã£©¡°»ùÓÚ Lucene Java? ËÑË÷¿â¡¢ÅäÓÐ XML/HTTP ºÍ JSON API¡¢ÃüÖнá¹ûÍ»³öÏÔʾ¡¢·ÖÃæ×éÅäʽËÑË÷¡¢»º´æ¡¢¸´ÖÆºÍ Web ¹ÜÀí½çÃæµÄ¿ªÔ´ÆóÒµËÑË÷·þÎñÆ÷¡±¡£

ÆäÖÐÖµµÃ×¢ÒâµÄÊÇ£¬´óÁ÷Á¿µÄ Web Õ¾µã¡¢Netflix¡¢Digg ºÍ CNET µÄ News.com ºÍ CNET Reviews ʹÓà Solr À´ÔöÇ¿ËÑË÷¹¦ÄÜ¡£ÓÉ Solr Çý¶¯µÄ¹«¹²Õ¾µãµÄ³¤´®Áбí¿ÉÒÔÔÚ Solr ά»ùÖÐÕÒµ½£¨Çë²ÎÔÄ ²Î¿¼×ÊÁÏ£©¡£

Á˽âÈçºÎʹÓà Solr ºÍ PHP ´´½¨ËÑË÷Æû³µÁ㲿¼þÊý¾Ý¿âµÄСÐÍÓ¦ÓóÌÐò¡£ËäȻʾÀýÊý¾Ý¿âÖ»Êǰüº¬Ò»Ð©¼Ç¼£¬µ«ÊÇËüÇáÇáËÉËɾÍÄܰüº¬Êý°ÙÍòÌõ¼Ç¼¡£±¾ÎÄÖÐʹÓõÄËùÓÐÔ´´úÂë¾ù¿É´Ó ÏÂÔØ ²¿·Ö»ñµÃ¡£

°²×° Solr

Òª½« Solr Óë PHP ½áºÏʹÓã¬Äú±ØÐë°²×° Solr£¬Éè¼ÆË÷Òý£¬×¼±¸ Solr ÒªË÷ÒýµÄÊý¾Ý£¬ÔØÈëË÷Òý£¬±àдִÐвéѯµÄ PHP ´úÂëºÍÏÔʾ½á¹û¡£´´½¨¿ÉËÑË÷Ë÷ÒýËùÐèµÄ´ó²¿·Ö¹¤×÷¿ÉÒÔͨ¹ýÃüÁîÐÐÖ´ÐС£µ±È»£¬Solr µÄ PHP ±à³Ì½Ó¿ÚÒ²»áÓ°ÏìË÷ÒýµÄÄÚÈÝ¡£

Solr ÊÇÓà Java ¼¼ÊõʵÏֵġ£ÒªÔËÐÐ Solr ¼°Æä¹ÜÀí¹¤¾ß£¬Äú±ØÐë°²×° Java V1.5 Èí¼þ¿ª·¢°ü (Java 5 SDK)¡£¼¸¸öÌṩÉ̶¼ÌṩÁË Java V1.5 SDK ¡ª¡ª ÀýÈ磬Sun Microsystems¡¢IBM? ºÍ BEA Systems ¡ª¡ª ²¢ÇÒÿ¸öʵÏÖ¶¼Äܹ»Çý¶¯ Solr¡£Ö»ÐèÑ¡ÔñÊÊÓÃÓÚÄúµÄ²Ù×÷ϵͳµÄ Java °ü²¢×ñÑ­ÏàÓ¦µÄ˵Ã÷À´Íê³É°²×°¡£

ÔÚ Ðí¶àÇé¿öÏ£¬°²×° Java V1.5 ¾ÍÏñÔËÐÐ×ÔÌáÈ¡¹éµµºÍ½ÓÊÜÐí¿É֤ЭÒéÌõ¿îÒ»Ñù¼òµ¥¡£¹éµµÖеĽű¾ÔÚ¼¸ÃëÖÓÄÚ¾ÍÄÜÍê³ÉËùÓд󲿷ּè¾ÞÈÎÎñ¡£ÆäËû²Ù×÷ϵͳ£¨ÀýÈç Debian£©½«ÔÚ APT ϵͳ¿âÖÐÌṩ Java 5 SDK¡£ÀýÈ磬Èç¹ûʹÓà Debian »ò Ubuntu£¬Ôò¿ÉÒÔÓà sudo apt-get install sun-java5-jdk °²×° Java V1.5 Èí¼þ¡£

APT »¹½«×Ô¶¯ÏÂÔØÊ¹Óà Java 5 SDK ËùÐèµÄËùÓÐÒÀÀµÐÔ£¬·Ç³£·½±ã¡£

Èç¹û Java Èí¼þÒѾ­°²×°²¢ÇÒ Java ¿ÉÖ´ÐÐÎļþÒÑÔÚ PATH ÖУ¬ÇëÔËÐÐ java -version À´È·¶¨ÓµÓÐµÄ Java ´úÂë¡£

ÔÚ ÕâÀÈÃÎÒÃÇʹÓà Mac OS X V10.5 Leopard ²Ù×÷ϵͳ×÷ΪÑÝʾµÄ»ù´¡¡£Apple µÄ Leopard ¸½´øÁË Java V1.5¡£Ö»Òª¶Ô Apache µÄĬÈÏÅäÖýøÐÐ΢С¸ü¸Ä£¬Leopard Ò²¿ÉÒÔÔËÐÐ PHP Ó¦ÓóÌÐò¡£ÔÚ Leopard ÖÕ¶Ë´°¿ÚÖÐÔËÐÐ java -version ½«Éú³ÉÒÔÏÂÊä³ö¡£

Çåµ¥ 1. ÔÚ Leopard ÖÕ¶Ë´°¿ÚÖÐÔËÐÐ java -version

×¢£ºLeopard ½«ÔÊÐíÄúÔÚ /Applications/Utilities/Java µÄ Java Preferences Ó¦ÓóÌÐòÖÐµÄ Java V1.4 Óë V1.5 Ö®¼äÀ´»ØÇл»¡£Èç¹û Leopard °²×°ÏÔʾ V1.4£¬Ôò´ò¿ª Java Preferences ²¢°´ÕÕͼ 1 Ëùʾ¸ü¸ÄÉèÖá£

ͼ 1. Leopard ÖÐµÄ Java Preferences Ó¦ÓóÌÐò

Òª°²×° Solr£¬Çë·ÃÎÊ Apache.org£¬µ¥»÷ Resources > Download£¬Ñ¡ÔñÒ»¸ö·½±ã·ÃÎʵÄÏîÄ¿¾µÏñ£¬²¢ÇÒÔÚËùʾÎļþ¼ÐÄÚä¯ÀÀÑ¡Ôñ Solr V1.2 µÄ tarball£¨.tgz Îļþ£©¡£ÏÂÔØ½«´«ÊäÃû³ÆÀàËÆ apache-solr-1.2.0.tgz µÄÎļþ¡£ÓÃÏÂÁдúÂë½âѹËõ tarball¡£

Çåµ¥ 2. ½âѹËõ tarball

ÔÚд´½¨µÄĿ¼ÖУ¬ÃûΪ dist µÄÎļþ¼Ð°üº¬°ó¶¨Îª Java ¹éµµ (JAR) µÄ Solr ´úÂë¡£×ÓĿ¼ example/exampledocs °üº¬ÒѾ­¸ñʽ»¯µÄÊý¾ÝʾÀý ¡ª¡ª ͨ³£Îª XML ´úÂë ¡ª¡ª ²¢ÇÒ×¼±¸ºÃ¹© Solr Ë÷Òý¡£

example Ŀ¼°üº¬Ò»¸öÍêÕûµÄÑùÀý Solr Ó¦ÓóÌÐò¡£ÒªÔËÐÐËü£¬Ö»ÐèÓÃÓ¦ÓóÌÐò¹éµµ start.jar Æô¶¯ Java ÒýÇæ¡£

Çåµ¥ 3. Æô¶¯ Java ÒýÇæ

Ó¦ÓóÌÐòÏÖÔÚ¿ÉÒÔÔÚ 8983 ¶Ë¿ÚÉÏʹÓá£Æô¶¯ä¯ÀÀÆ÷²¢ÔÚµØÖ·À¸ÖмüÈë http://localhost:8983/solr/admin/¡£ÕâÊÇÓÃÓÚ¹ÜÀí Solr µÄ½Ó¿Ú£¨ÒªÍ£Ö¹ Solr ·þÎñÆ÷£¬ÇëÔÚÃüÁîÐÐÖмüÈë Ctrl+C ×éºÏ¼ü£©¡£

µ«ÊÇ Solr Ë÷ÒýÖл¹Ã»ÓÐÊý¾Ý¿É¹©¹ÜÀí»ò²éѯ¡£

°ÑÊý¾Ý×°Èë Solr

Solr ·Ç³£Áé»î£¬Ö§³Ö´´½¨ÓÐЧË÷ÒýµÄ¸÷ÖÖÊý¾ÝÀàÐͺ͹æÔò¡£¶øÇÒËäÈ» Solr Ö§³ÖÊý¾ÝÀàÐͺ͹æÔòÊ®·Ö¹ã·º£¬µ«ÊÇÈç¹û±ê×¼×é¼þ²»¹»Ó㬻¹¿ÉÒÔͨ¹ý±àдÐ嵀 Java Àà½øÒ»²½×Ô¶¨Òå Solr¡£

¸ø¶¨Ò»×éÊý¾ÝÀàÐͺ͹æÔò£¬Äú¾Í¿ÉÒÔ´´½¨Ò»¸ö Solr ģʽÀ´ÃèÊöÊý¾ÝºÍ¿ØÖÆÓ¦µ±ÔõÑù¹¹ÔìË÷Òý¡£È»ºóµ¼³öÊý¾ÝÀ´Æ¥Åäģʽ²¢½«Êý¾Ý×°Èë Solr¡£Solr ½«¶¯Ì¬´´½¨Ë÷Òý£¬ÔڼǼ±»´´½¨¡¢Ð޸Ļòɾ³ýʱÁ¢¼´¸üÐÂÿ¸öË÷Òý¡£

¿ÉÒÔÔÚ Apache.org µÄ Solr Ô´´úÂë¿âÖÐÕÒµ½Ä¬È쵀 Solr ģʽ¡£Îª¹©²Î¿¼£¬ÏÂÃæÏÔʾÁËĬÈÏģʽµÄ´úÂëÆ¬¶Î¡£

Çåµ¥ 3. ĬÈ쵀 Solr ģʽ´úÂëÆ¬¶Î

ģʽµÄ´ó²¿·ÖÄÚÈݶ¼ÎÞÐè¼ÓÒÔ˵Ã÷£¬µ«ÊÇÓÐһЩ·½ÃæÐèҪעÒ⣺

(1)Èçʾ£¬×Ö¶Î id ÊÇ×Ö·û´® (type="string") ²¢ÇÒÓ¦µ±±»Ë÷Òý (indexed="true")¡£ËüÒ²ÊÇÒ»¸ö±ØÐè×Ö¶Î (required="true")¡£Ê¹ÓôËģʽ£¬ÔØÈë Solr µÄÿÌõ¼Ç¼±ØÐëΪÕâ¸ö×Ö¶ÎÌṩֵ¡£<uniqueKey>id</uniqueKey> ÐÞÊδʽøÒ»²½ËµÃ÷ id ×ֶαØÐëΩһ£¨Solr ²»ÒªÇó ID ×Ö¶ÎΩһ£»ÕâÖ»ÊÇÔÚĬÈÏË÷ÒýģʽÖн¨Á¢µÄ¹æÔò£©¡£ÊôÐÔ stored="true" ±íʾ id ×Ö¶ÎÓ¦µ±¿É¼ìË÷¡£ÎªÊ²Ã´²»°Ñ stored ÉèΪ false£¿Äú¿ÉÒÔʹÓò»¿É¼ìË÷µÄ×Ö¶ÎÀ´ÒÔ²»Í¬·½Ê½¸ø½á¹ûÅÅÐò£¬±È·½ËµÊ¹Óà nameSort£¬ËüÊÇ name ×ֶεĸ±±¾£¨×îºóÒ»ÐÐÖÐµÄ copyField ÃüÁ£¬µ«ÊÇÐÐΪ²»Í¬¡£×¢Ò⣬nameSort ÊÇ string£¬¶ø name ÊÇ text¡£Ä¬ÈÏË÷Òýģʽ½«²ÉÈ¡ÉÔ΢²»Í¬µÄ·½Ê½À´´¦ÀíÕâÁ½ÖÖÀàÐÍ¡£

(2)×Ö¶Î cat ÊÇ multiValued¡£¼Ç¼¿ÉÒÔΪ´Ë×ֶζ¨Òå¶à¸öÖµ¡£ÀýÈ磬Èç¹ûÓ¦ÓóÌÐò¹ÜÀíÄÚÈÝ£¬Ôò¿ÉÒÔ¸øÒ»ÆªÎÄÕÂÖ¸¶¨¶à¸ö±êÌâ¡£Äú¿ÉÒÔʹÓà cat ×ֶΣ¨»òÕß×Ô¶¨ÒåÀàËÆ×ֶΣ©À´²¶×½ËùÓбêÌâ¡£

Çåµ¥ 4 ÏÔʾÁË example/exampledocs/ipod_other.xml Îļþ£¬¸ÃÎļþ±íʾ iPod ¸½¼þ·ÖÀàÖеÄÁ½¸öÌõÄ¿¡£

Çåµ¥ 4. ΪĬÈÏ Solr Ë÷Òýģʽ¸ñʽ»¯µÄÊý¾Ý

add ÔªËØÊÇÓÃÓÚ½«·â×°¼Ç¼Ìí¼Óµ½Ë÷ÒýÖÐµÄ Solr ÃüÁÿÌõ¼Ç¼¶¼½«±»²¶×½µ½ doc ÔªËØÖУ¬¸ÃÔªËØ½«Ê¹ÓÃÒ»×éÃûΪ field µÄÔªËØÀ´Ö¸¶¨×Ö¶ÎÖµ¡£×Ö¶Î weight¡¢price¡¢inStock¡¢manu¡¢features ºÍ popularity ¶¼ÊÇÔÚĬÈÏ Solr Ë÷ÒýģʽÖж¨ÒåµÄÆäËû×ֶΡ£features ×Ö¶ÎÓµÓÐÓë cat ÏàͬµÄÊôÐÔ£¬µ«ÊÇÓïÒ岻ͬ£ºËüÁоÙÁ˲úÆ·µÄ¹¦ÄÜ£¬ÊýÁ¿¿ÉÄܽ϶ࡣ

ËÑË÷Æû³µÁ㲿¼þ

±¾Àý½«Ë÷ÒýÆû³µÁ㲿¼þ¼¯¡£Ã¿¸öÆû³µÁ㲿¼þ¶¼Óжà¸ö×ֶΣ¬±í 1 ÖÐÏÔʾÁË×îÖØÒªµÄ×Ö¶ÎÑùÀý¡£µÚÒ»ÁÐÖÐÁгöÁË×Ö¶ÎÃû¡£µÚ¶þÁн«Ìṩ¼òÒªÃèÊö£¬¶øµÚÈýÁн«ÁгöÂß¼­ÀàÐÍ¡£µÚËÄÁн«ÏÔʾÓÃÓÚ±íʾÊý¾ÝµÄË÷ÒýÀàÐÍ£¨°´ÕÕ Çåµ¥ 5 µÄģʽÖе͍Ò壩¡£

±í 1. Æû³µÁ㲿¼þ¼Ç¼µÄ×Ö¶Î

Çåµ¥ 3 ÏÔʾÁËÆû³µÁ㲿¼þË÷ÒýËùʹÓÃµÄ Solr ģʽ²¿·Ö¡£Ëü´ó²¿·Ö¶¼ÊÇ»ùÓÚĬÈÏ Solr ģʽ¡£Ê¹ÓõľßÌå×Ö¶Î ¡ª¡ª Ãû³ÆºÍÊôÐÔ ¡ª¡ª Ö»ÊÇÌæ»»ÁËÔÚĬÈÏģʽÖÐÕÒµ½µÄ fields ÔªËØ£¨Èç Çåµ¥ 1 ÖÐËùʾ£©¡£

Çåµ¥ 5. Æû³µÁ㲿¼þË÷Òýģʽ

Õë¶ÔÒÔÉÏ×ֶΣ¬ÐèÒª½«Æû³µÁ㲿¼þÊý¾Ý¿âµ¼³ö²¢¸ñʽ»¯ÒÔÉÏ´«µ½ Solr ÖУ¬ÈçÇåµ¥ 6 Ëùʾ¡£

Çåµ¥ 6. Ϊ½øÐÐË÷Òý¶ø¸ñʽ»¯µÄÆû³µÁ㲿¼þÊý¾Ý¿â

ÈÃÎÒÃǰ²×°ÐÂË÷Òýģʽ²¢°ÑÊý¾Ý×°Èë Solr¡£Ê×ÏÈ£¬Í¨¹ýʹÓà Ctrl+C ×éºÏ¼üÀ´Í£Ö¹ Solr ÊØ»¤½ø³Ì£¨Èç¹ûËüÈÔÔÚÔËÐУ©¡£ÔÚ example/solr/conf/schema.xml ÖÐÖÆ×÷ÏÖÓÐ Solr ģʽµÄ¹éµµ¡£½ÓÏÂÀ´£¬Í¨¹ýÇåµ¥ 6 ´´½¨Ò»¸öÎı¾Îļþ£¬½«Æä±£´æµ½ /tmp/schema.xml ÖУ¬È»ºó¸´ÖƵ½ example/solr/conf/schema.xml ÖС£ÎªÇåµ¥ 7 ÖÐËùʾµÄÊý¾Ý´´½¨ÁíÒ»¸öÎļþ¡£ÏÖÔÚ£¬Äú¿ÉÒÔÖØÐÂÆô¶¯ Solr ²¢Ê¹ÓÃʾÀýËùÌṩµÄ posting ʵÓóÌÐò¡£

Çåµ¥ 7. ÆôÓôøÓÐÐÂģʽµÄ Solr

³É¹¦£¡Èç¹ûÐèÒª¼ìÑéË÷ÒýÊÇ·ñ´æÔÚ²¢°üº¬Á½¸öÎĵµ£¬Ç뽫ä¯ÀÀÆ÷ÔÙ´ÎÖ¸Ïò http://localhost:8983/solr/admin/¡£ÄúÓ¦µ±»áÔÚÒ³Ãæ¶¥²¿¿´µ½ ¡°(autoparts)¡±¡£Èç¹û¿´µ½ÁË£¬Çëµ¥»÷Ò³ÃæÖмäµÄ²éѯ¿ò²¢¼üÈë partno: 1 or partno: 2¡£

½á¹ûÓ¦µ±ÀàËÆÏÂÃæµÄÄÚÈÝ£º

³¢ÊÔÆäËûһЩ²éѯ¡£Lucene ά»ùÖнéÉÜÁË Lucene ²éѯ£¨Solr ÖеÄËÑË÷ÒýÇæ£©µÄÓï·¨£¨Çë²ÎÔÄ ²Î¿¼×ÊÁÏ£©¡£

Äú»¹Ó¦µ±³¢ÊÔÔٴα༭ºÍÔØÈëÊý¾Ý¡£ÓÉÓÚÉùÃ÷ÁË partno ×Ö¶ÎΩһ£¬Òò´ËÖØ¸´ÉÏ´«Í¬Ò»¸ö²¿¼þºÅ½«Ö»ÓÃмÇÂ¼Ìæ»»¾ÉË÷Òý¼Ç¼¡£³ýÁË add ÃüÁîÖ®Í⣬Äú»¹¿ÉÒÔʹÓà commit¡¢optimize ºÍ delete¡£×îºóÒ»¸öÃüÁî¿ÉÒÔ°´ÕÕ ID ɾ³ýÒ»ÌõÌØ¶¨¼Ç¼£¬Ò²¿ÉÒÔͨ¹ý²éѯɾ³ý¶àÌõ¼Ç¼¡£

ÏÖÔÚʹÓà PHP

×îºó£¬PHP ½«²ÎÓëµ½Õâ¸öʾÀýÖС£

ÖÁÉÙÓÐÁ½¸ö PHP Solr API¡£×׳µÄʵÏÖÊÇ Donovan Jimenez µÄ PHP Solr Client£¨Çë²ÎÔÄ ²Î¿¼×ÊÁÏ£©¡£´úÂëÊÇÔÚÓë Solr ÏàͬµÄÌõ¿îÏÂÐí¿É¿ª·¢µÄ£¬ËüÓÐÀ©Õ¹Îĵµ£¬²¢ÇÒÓë Solr V1.2 ¼æÈÝ¡£×«Ð´±¾ÎÄʱµÄ×îа汾ÊÇÔÚ 2007 Äê 10 Ô 2 ÈÕ·¢²¼µÄ¡£

Solr Client ½«ÌṩËĸö PHP Àࣺ

(1)Apache_Solr_Service ±íʾ Solr ·þÎñÆ÷¡£Ê¹ÓÃÕâЩ·½·¨À´ ping ·þÎñÆ÷£¬Ìí¼ÓºÍɾ³ýÎĵµ£¬Ìá½»¸ü¸Ä£¬ÓÅ»¯Ë÷Òý£¬ÒÔ¼°ÔËÐвéѯ¡£

(2) Apache_Solr_Document ÊÕ¼ Solr Îĵµ¡£¸ÃÀàµÄ·½·¨½«¹ÜÀí£¨¹Ø¼ü×Ö£¬Öµ£©¶ÔºÍ¶àÖµ×ֶΡ£×Ö¶ÎÖµ¿ÉÒÔͨ¹ýÖ±½Ó½â³ýÒýÓÃÀ´·ÃÎÊ£¬ÀýÈç $document->title = 'Something'; ... echo $document->title;¡£

(3) Apache_Solr_Response ·â×° Solr ÏìÓ¦¡£Õâ¶Î´úÂëÒÀÀµÓÚ json_decode() º¯Êý£¬¸Ãº¯ÊýÊÇ PHP V5.2.0 ºÍ¸ü¸ß°æ±¾¸½´øµÄ£¬Ò²¿ÉÒÔÓà PHP Extension Community Library£¨PECL ¡ª¡ª Çë²ÎÔÄ ²Î¿¼×ÊÁÏ£©À´°²×°¡£

(4)Apache_Solr_Service_Balancer ½«ÔöÇ¿ Apache_Solr_Service£¬ÔÊÐíÄúÁ¬½Óµ½Ò»¸ö·Ö·¢ÖеĶàÏî Solr ·þÎñ¡£±¾ÎÄÖÐûÓнéÉܸÃÀà¡£

ÏÂÔØ PHP Solr Client£¨Çë²ÎÔÄ ²Î¿¼×ÊÁÏ£© ²¢½«Æä½âѹËõµ½¹¤×÷Ŀ¼ÖС£Çл»µ½ SolrPhpClient¡£½ÓÏÂÀ´£¬²é¿´Îļþ Apache/Solr/Service.php¡£×«Ð´±¾ÎÄʱ£¬µÚ 335 ÐÐȱÉÙÁËÍÏβ·ÖºÅ¡£±à¼­¸ÃÎļþ²¢Ìí¼Ó·ÖºÅ£¨Èç¹ûÓбØÒª£©¡£ÁíÇë²é¿´Îļþ Apache/Solr/Document.php¡£ÔÚµÚ 112 ÐÐÖÁµÚ 117 ÐÐÖÐÓ¦µ±¶Á³öÈçÏÂÄÚÈÝ¡£

¸üÕýÎļþºó£¬¿ÉÒÔÔÚÆäËû PHP ¿âÅԱ߰²×° Apache Ŀ¼¡£

ÏÂÁдúÂëÏÔʾÁËÁ¬½Ó Solr ·þÎñ¡¢ÏòË÷ÒýÖÐÌí¼ÓÁ½¸öÎĵµºÍÔËÐÐÏÈǰʹÓõÄÁ㲿¼þºÅ²éѯµÄ PHP Ó¦ÓóÌÐò¡£

Çåµ¥ 8. ÓÃÓÚÁ¬½Ó¡¢ÔØÈëºÍ²éѯ Solr Ë÷ÒýµÄÑùÀý PHP Ó¦ÓóÌÐò
<?php
  require_once( 'Apache/Solr/Service.php' );
  
  // 
  // 
  // Try to connect to the named server, port, and url
  // 
  $solr = new Apache_Solr_Service( 'localhost', '8983', '/solr' );
  
  if ( ! $solr->ping() ) {
    echo 'Solr service not responding.';
    exit;
  }
  
  //
  //
  // Create two documents to represent two auto parts.
  // In practice, documents would likely be assembled from a 
  //   database query. 
  //
  $parts = array(
    'spark_plug' => array(
      'partno' => 1,
      'name' => 'Spark plug',
      'model' => array( 'Boxster', '924' ),
      'year' => array( 1999, 2000 ),
      'price' => 25.00,
      'inStock' => true,
    ),
    'windshield' => array(
      'partno' => 2,
      'name' => 'Windshield',
      'model' => '911',
      'year' => array( 1999, 2000 ),
      'price' => 15.00,
      'inStock' => false,
    )
  );
    
  $documents = array();
  
  foreach ( $parts as $item => $fields ) {
    $part = new Apache_Solr_Document();
    
    foreach ( $fields as $key => $value ) {
      if ( is_array( $value ) ) {
        foreach ( $value as $datum ) {
          $part->setMultiValue( $key, $datum );
        }
      }
      else {
        $part->$key = $value;
      }
    }
    
    $documents[] = $part;
  }
    
  //
  //
  // Load the documents into the index
  // 
  try {
    $solr->addDocuments( $documents );
    $solr->commit();
    $solr->optimize();
  }
  catch ( Exception $e ) {
    echo $e->getMessage();
  }
  
  //
  // 
  // Run some queries. Provide the raw path, a starting offset
  //   for result documents, and the maximum number of result
  //   documents to return. You can also use a fourth parameter
  //   to control how results are sorted and highlighted, 
  //   among other options.
  //
  $offset = 0;
  $limit = 10;
  
  $queries = array(
    'partno: 1 OR partno: 2',
    'model: Boxster',
    'name: plug'
  );

  foreach ( $queries as $query ) {
    $response = $solr->search( $query, $offset, $limit );
    
    if ( $response->getHttpStatus() == 200 ) { 
      // print_r( $response->getRawResponse() );
      
      if ( $response->response->numFound > 0 ) {
        echo "$query <br />";

        foreach ( $response->response->docs as $doc ) { 
          echo "$doc->partno $doc->name <br />";
        }
        
        echo '<br />';
      }
    }
    else {
      echo $response->getHttpStatusMessage();
    }
  }
?>

Ê×ÏÈ£¬´úÂ뽫Á¬½Óµ½¸ø¶¨¶Ë¿ÚºÍ·¾¶ÉÏÃûΪ Solr µÄ·þÎñÆ÷£¬²¢½«Ê¹Óà ping() ·½·¨À´¼ìÑé·þÎñÆ÷ÊÇ·ñ¿ÉÔËÐС£

½ÓÏÂÀ´£¬´úÂ뽫°Ñ±íʾΪ PHP Êý×éµÄ¼Ç¼ת»»Îª Solr Îĵµ¡£Èç¹û×Ö¶ÎÓе¥¸öÖµ£¬Ôò¼òµ¥µÄ·ÃÎʳÌÐò½«°Ñ£¨¹Ø¼ü×Ö£¬Öµ£©¶ÔÌí¼Óµ½ÎĵµÖС£Èç¹û×Ö¶ÎÓжà¸öÖµ£¬ÔòÓÃÌØÊ⺯Êý setMultiValue() °ÑÖµÁÐ±í¸³¸ø¹Ø¼ü×Ö¡£Äú¿ÉÒÔ¿´µ½´Ë¹ý³Ì·Ç³£ÀàËÆÓÚ Solr ÎĵµµÄ XML ±íʾ¡£

×÷ΪһÏîÓÅ»¯£¬addDocuments() ½«°Ñ¶à¸öÎĵµ²åÈëË÷Òý¡£ºóÐøµÄ commit() ºÍ optimize() º¯Êý½«Íê³ÉÌí¼Ó²Ù×÷¡£

Ôڵײ¿£¬¶à¸ö²éѯ½«´ÓË÷ÒýÖмìË÷Êý¾Ý¡£Äú¿ÉÒÔͨ¹ýÁ½¸öº¯Êý²é¿´½á¹û£ºgetRawResponse() º¯Êý½«Éú³ÉÍêÕûµÄδ½âÎö½á¹û£¬¶ø docs() º¯Êý½«·µ»Ø´øÓÐÖ¸¶¨·ÃÎʳÌÐòµÄÎĵµÊý×é¡£

Èç¹û²éѯδÄÜ´Ó Solr »ñµÃÈ·ÈÏ£¬´úÂ뽫Êä³ö´íÎóÏûÏ¢¡£¿Õ½á¹û¼¯½«²»²úÉúÊä³ö¡£

½áÊøÓï

Solr ÁîÈËÄÑÒÔÖÃÐŵØÇ¿´ó£¬²¢ÇÒʹÓà PHP API ¿ÉÒÔѸËÙµØÓëÈÎºÎÆ½Ì¨¼¯³É¡£µ«¸ü°ôµÄÊÇ£¬Solr Ò×ÓÚ°²×°ºÍÔËÐУ¬²¢ÇÒ¿ÉÒÔ¸ù¾ÝÐèÒªÆôÓø߼¶¹¦ÄÜ¡£×î°ôµÄÊÇ£¬Solr ÊÇÃâ·ÑµÄ¡£²»ÓùºÂòËÑË÷ÒýÇæ¡£Ê¡ÏÂÄúµÄÇ®£¬Ê¹Óà Solr °É¡£

·ÃÎÊ Solr Web Õ¾µãÁ˽â°üÀ¨ÅÅÐò¡¢·ÖÀà½á¹ûºÍ¸´ÖÆÔÚÄڵĸ߼¶ÅäÖõĸü¶àÐÅÏ¢¡£Lucene Web Õ¾µãÊÇÁíÒ»¸öÐÅÏ¢Ô´£¬ÒòΪËüÊÇ Solr ϵͳϵÄËÑË÷¼¼Êõ¡£

 

   
3085 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

Java ÖеÄÖÐÎıàÂëÎÊÌâ
Java»ù´¡ÖªÊ¶µÄÈýÊ®¸ö¾­µäÎÊ´ð
Íæ×ª Java Web Ó¦Óÿª·¢
ʹÓÃSpring¸üºÃµØ´¦ÀíStruts
ÓÃEclipse¿ª·¢iPhone WebÓ¦ÓÃ
²å¼þϵͳ¿ò¼Ü·ÖÎö

Struts+Spring+Hibernate
»ùÓÚJ2EEµÄWeb 2.0Ó¦Óÿª·¢
J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Java EE 5ÆóÒµ¼¶¼Ü¹¹Éè¼Æ
Javaµ¥Ôª²âÊÔ·½·¨Óë¼¼Êõ
Java±à³Ì·½·¨Óë¼¼Êõ

Struts+Spring+Hibernate/EJB+ÐÔÄÜÓÅ»¯
»ªÏÄ»ù½ð ActiveMQ Ô­ÀíÓë¹ÜÀí
ijÃñº½¹«Ë¾ Java»ù´¡±à³Ìµ½Ó¦Óÿª·¢
ij·çµç¹«Ë¾ Java Ó¦Óÿª·¢Æ½Ì¨ÓëÇ¨ÒÆ
ÈÕÕÕ¸Û J2EEÓ¦Óÿª·¢¼¼Êõ¿ò¼ÜÓëʵ¼ù
ij¿ç¹ú¹«Ë¾ ¹¤×÷Á÷¹ÜÀíJBPM
¶«·½º½¿Õ¹«Ë¾ ¸ß¼¶J2EE¼°ÆäÇ°ÑØ¼¼Êõ