From b1869dd1220723417de86e0fe730c5804b722b6b Mon Sep 17 00:00:00 2001 From: Kevin Lynx Date: Sat, 24 Aug 2013 16:42:04 +0800 Subject: [PATCH] add http search result highlight --- ebin/dhtcrawler.app | 13 +++++++------ ebin/http_handler.beam | Bin 12480 -> 13336 bytes ebin/sphinx_excerpt.beam | Bin 0 -> 4112 bytes ebin/sphinx_search.beam | Bin 3576 -> 6628 bytes www/page.temp | 4 ++++ 5 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 ebin/sphinx_excerpt.beam diff --git a/ebin/dhtcrawler.app b/ebin/dhtcrawler.app index bbbffac..d1fcac3 100644 --- a/ebin/dhtcrawler.app +++ b/ebin/dhtcrawler.app @@ -1,6 +1,6 @@ {application,dhtcrawler, [{description,"A DHT crawler to index magnet hash to torrent"}, - {vsn,"53e3036"}, + {vsn,"2f8842a"}, {registered,[dht_crawler_sup]}, {applications,[kernel,stdlib,crypto,public_key,ssl,inets,bson, mongodb]}, @@ -16,9 +16,10 @@ index_file,loc_torrent,loc_torrent_cache, loc_torrent_sup,name_seger,rmmseg,sphinx_builder, sphinx_builder2,sphinx_builder_sup,sphinx_cmd, - sphinx_doc,sphinx_id,sphinx_search,sphinx_torrent, - sphinx_torrent2,sphinx_xml,string_split,string_util, - time_util,tor_builder,tor_download,tor_download_stats, - tor_location,tor_location_reader,tor_location_writer, - tor_name_seg,torrent_file,transfer,urldecode,vlog, + sphinx_doc,sphinx_excerpt,sphinx_id,sphinx_search, + sphinx_torrent,sphinx_torrent2,sphinx_xml, + string_split,string_util,time_util,tor_builder, + tor_download,tor_download_stats,tor_location, + tor_location_reader,tor_location_writer,tor_name_seg, + torrent_file,transfer,urldecode,vlog, xmerl_xml_cdata]}]}. diff --git a/ebin/http_handler.beam b/ebin/http_handler.beam index cd3b30ee64fa360bcae163ae8bca2454978a8259..0310b012733a9a0cda7d4d1b98c05e1d4aa49252 100644 GIT binary patch delta 8369 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 diff --git a/ebin/sphinx_excerpt.beam b/ebin/sphinx_excerpt.beam new file mode 100644 index 0000000000000000000000000000000000000000..8dafe50789965f8939794af1be72129f1a979f3c GIT binary patch literal 4112 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

B8 z1Pns+uN(@1280>}2%+dv%=#WZ*#d-7_XTO27}iV!Km+g46~_9_mpO< zd0PNyI!(=?9#3AlqWy0xg`}|3g)o6ojKxZ0(OV4mJjiM3XLK!{=ISz*u4HOPN7FpG z5zuyv^bT5Q6UYQqn5?jb$nU>Q6r2gb*arb+HaDD;z+@?EBrie0Wb+RK2v!)ID>YFk zD}$k^P`ywqsh>JcL=B4<0D#g=mJa~ne3DKV?%l`3+hKm*CzgH8Ppx!0SDPL)aqkoVDpAFeb1mztDi1WcClu$N(OKp#_!M-F&F^IYeB{le*r_iO*^^O?lMZik zoUTn;>1fWXtW5aN*!MJ1+u{Qxm=hv9oq|cH^L>BN90OZLiP3QbGPNUm*Kg%)?w9-< zEO&0THrbunSH0VvFBviEU5~zQr(QG737k@G_e&i_cdn78stJE{?uxzf)$ME%_QqZS zmqu80cWD?AE|E+_{f9D#8mk1F4RW@%0EZOz zJ`fq7XtosH9Q#iw^_$t}pBm`fR+6o?1N~AvIz15?f~)42bj7Zeo9LKkSl+0wCY@D5 zZ}*v1ag|s2g(08N*DN$+IF*{5C9-sSJ?AJR+w>_ z6`Wz-`w@KAQnwP5^~~}(MiSG6EeKj8;~)3dIE~+3k@5D=!F5A}!Zui9^I_%pcB88X zz5}A*t@gaFrY=J|EDs}kGn^URyReMYnp6r}-%U2JR3;5SYdw&khH>?;Cf`4ofAYYW zVA=3_xWsFh(O3Z^o#4{)^h0XVA!8q6CNa)LX3}tR;8t^F)(AZqo-#{k^xn?SC2#yP z9JQAJK{dK2Ex0O8%4tj)Tv;`p4+%F&yDXX%?pSNPsCCoTWls8MirK2YS{y;5t2<5E zpkbU-jJyj&#xXJtAHiTtnL<^IhQ0jj?>1Av;9L{);+M>jasPX)QT1s9IF8A(w{26O zP6vdNUFM7qd%wv({(iFBg!|m_%1;Nu2~>x@%~;;l9YARPUVIpS??jlmXeJ}wUDOxa zDfOQBmJ{$mr{0}QKMCGB%wYjdCDf%x+oL5myO!k^lZ!_J&oV0RAFg;@eSXGmyeJj6 zcH7qv^8qPv>UR)XQalUtDw0wM9 z^s3V@WmnGk|2Ep*i}lTLIOfkN?1&aUDK0a`jMP>idqi+EEzSwf_dOtgF>>AEM%v&+ z`RFa%$Q4jBG@Urzl&H(bEs{}BJU&0!UiYA-&Hulai9=-PVxtX5u70jc%9T7PxIVmv zneyqz$yO&SC*$qjFH9|m)Q;jx%Zz+aF|{16+M@YdwM)ibLc8A7bl}sLQPY>A=Qf0l zeZM!o-A7+@bN~43XRq%rr5LIe2}``-ev6W?c*|W*(PsOkM;)~WpB@Se@i%+Go?z-w z)_$C=6V`fp*HL5EzsvM4o*M9h-|({cv&c5s;~X^ISl+&sD$b~%-&t-mV@Q6>?p9GX zMMbvtddfGy)Qvh>6^*QmOykbxy8JP7?o3G&Gpv$wxo3My(dG8c7w?NK zUI@*%85h?+7haC*i8=kca`KgY{s!J+kI-w?q_uB{F7b={xA6*xWq9O5J9EY;W$1R` zCJudpIc|8*_bjHYb#SnvfY;CT>-2ehpXZF<>5Sd^ttYawese35UYsp(FBSQ?M6OT_ z=Y2}QZMYWeG)$WCDQN(*{ML664EB%Y6Z#m>?hp)+9MUOTxQlql7BOLgh9u&jjkG(9FFKB{NB@6lA>T|$|!dV@}UR76}9JAuxp&@T4m>>gVVQ?Ij77sb?Z>FUq3Y54dke4~t`F8f3nenA*6p`~<>C0mOR>4@_J z5+n9jMD({=I3leA>%GM)qfK{B+UgR+la&t*h%9g(uhtAMRozNuZ4CMS;T+(5tr=NL z=X3Rf4FtvMR+SewYBdbMd3UDo