ÔÚ ¡°Óà 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 Ë÷ÒýÖл¹Ã»ÓÐÊý¾Ý¿É¹©¹ÜÀí»ò²éѯ¡£
°ÑÊý¾Ý×°Èë SolrSolr ·Ç³£Áé»î£¬Ö§³Ö´´½¨ÓÐЧË÷ÒýµÄ¸÷ÖÖÊý¾ÝÀàÐͺ͹æÔò¡£¶øÇÒËäÈ» 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 ϵͳϵÄËÑË÷¼¼Êõ¡£ |