mirror of https://github.com/apache/lucene.git
further demo site updates - mostly making the Demo links work again
git-svn-id: https://svn.apache.org/repos/asf/lucene/java/trunk@808115 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
6cf489113c
commit
533831e584
|
@ -302,27 +302,27 @@ Bring it up in <span class="codefrag">vi</span> or your editor of choice and let
|
|||
<h2 class="boxed">IndexFiles</h2>
|
||||
<div class="section">
|
||||
<p>
|
||||
As we discussed in the previous walk-through, the <span class="codefrag">IndexFiles</span> class creates a Lucene
|
||||
As we discussed in the previous walk-through, the <a href="api/demo/org/apache/lucene/demo/IndexFiles.html">IndexFiles</a> class creates a Lucene
|
||||
Index. Let's take a look at how it does this.
|
||||
</p>
|
||||
<p>
|
||||
The first substantial thing the <span class="codefrag">main</span> function does is instantiate <span class="codefrag">IndexWriter</span>. It passes the string
|
||||
"<span class="codefrag">index</span>" and a new instance of a class called <span class="codefrag">StandardAnalyzer</span>.
|
||||
The first substantial thing the <span class="codefrag">main</span> function does is instantiate <a href="api/core/org/apache/lucene/index/IndexWriter.html">IndexWriter</a>. It passes the string
|
||||
"<span class="codefrag">index</span>" and a new instance of a class called <a href="api/core/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a>.
|
||||
The "<span class="codefrag">index</span>" string is the name of the filesystem directory where all index information
|
||||
should be stored. Because we're not passing a full path, this will be created as a subdirectory of
|
||||
the current working directory (if it does not already exist). On some platforms, it may be created
|
||||
in other directories (such as the user's home directory).
|
||||
</p>
|
||||
<p>
|
||||
The <span class="codefrag">IndexWriter</span> is the main
|
||||
The <a href="api/core/org/apache/lucene/index/IndexWriter.html">IndexWriter</a> is the main
|
||||
class responsible for creating indices. To use it you must instantiate it with a path that it can
|
||||
write the index into. If this path does not exist it will first create it. Otherwise it will
|
||||
refresh the index at that path. You can also create an index using one of the subclasses of <span class="codefrag">Directory</span>. In any case, you must also pass an
|
||||
instance of <span class="codefrag">org.apache.lucene.analysis.Analyzer</span>.
|
||||
refresh the index at that path. You can also create an index using one of the subclasses of <a href="api/core/org/apache/lucene/store/Directory.html">Directory</a>. In any case, you must also pass an
|
||||
instance of <a href="api/core/org/apache/lucene/analysis/Analyzer.html">org.apache.lucene.analysis.Analyzer</a>.
|
||||
</p>
|
||||
<p>
|
||||
The particular <span class="codefrag">Analyzer</span> we
|
||||
are using, <span class="codefrag">StandardAnalyzer</span>, is
|
||||
The particular <a href="api/core/org/apache/lucene/analysis/Analyzer.html">Analyzer</a> we
|
||||
are using, <a href="api/core/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a>, is
|
||||
little more than a standard Java Tokenizer, converting all strings to lowercase and filtering out
|
||||
stop words and characters from the index. By stop words and characters I mean common language
|
||||
words such as articles (a, an, the, etc.) and other strings that may have less value for searching
|
||||
|
@ -332,42 +332,42 @@ different languages (see the <span class="codefrag">*Analyzer.java</span> source
|
|||
</p>
|
||||
<p>
|
||||
Looking further down in the file, you should see the <span class="codefrag">indexDocs()</span> code. This recursive
|
||||
function simply crawls the directories and uses <span class="codefrag">FileDocument</span> to create <span class="codefrag">Document</span> objects. The <span class="codefrag">Document</span> is simply a data object to
|
||||
function simply crawls the directories and uses <a href="api/demo/org/apache/lucene/demo/FileDocument.html">FileDocument</a> to create <a href="api/core/org/apache/lucene/document/Document.html">Document</a> objects. The <a href="api/core/org/apache/lucene/document/Document.html">Document</a> is simply a data object to
|
||||
represent the content in the file as well as its creation time and location. These instances are
|
||||
added to the <span class="codefrag">indexWriter</span>. Take a look inside <span class="codefrag">FileDocument</span>. It's not particularly
|
||||
complicated. It just adds fields to the <span class="codefrag">Document</span>.
|
||||
added to the <span class="codefrag">indexWriter</span>. Take a look inside <a href="api/demo/org/apache/lucene/demo/FileDocument.html">FileDocument</a>. It's not particularly
|
||||
complicated. It just adds fields to the <a href="api/core/org/apache/lucene/document/Document.html">Document</a>.
|
||||
</p>
|
||||
<p>
|
||||
As you can see there isn't much to creating an index. The devil is in the details. You may also
|
||||
wish to examine the other samples in this directory, particularly the <span class="codefrag">IndexHTML</span> class. It is a bit more
|
||||
wish to examine the other samples in this directory, particularly the <a href="api/demo/org/apache/lucene/demo/IndexHTML.html">IndexHTML</a> class. It is a bit more
|
||||
complex but builds upon this example.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
<a name="N100AE"></a><a name="Searching Files"></a>
|
||||
<a name="N100A0"></a><a name="Searching Files"></a>
|
||||
<h2 class="boxed">Searching Files</h2>
|
||||
<div class="section">
|
||||
<p>
|
||||
The <span class="codefrag">SearchFiles</span> class is
|
||||
quite simple. It primarily collaborates with an <span class="codefrag">IndexSearcher</span>, <span class="codefrag">StandardAnalyzer</span>
|
||||
(which is used in the <span class="codefrag">IndexFiles</span> class as well) and a
|
||||
<span class="codefrag">QueryParser</span>. The
|
||||
The <a href="api/demo/org/apache/lucene/demo/SearchFiles.html">SearchFiles</a> class is
|
||||
quite simple. It primarily collaborates with an <a href="api/core/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a>, <a href="api/core/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a>
|
||||
(which is used in the <a href="api/core/org/apache/lucene/demo/IndexFiles.html">IndexFiles</a> class as well) and a
|
||||
<a href="api/core/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a>. The
|
||||
query parser is constructed with an analyzer used to interpret your query text in the same way the
|
||||
documents are interpreted: finding the end of words and removing useless words like 'a', 'an' and
|
||||
'the'. The <span class="codefrag">Query</span> object contains
|
||||
the results from the <span class="codefrag">QueryParser</span> which is passed to
|
||||
the searcher. Note that it's also possible to programmatically construct a rich <span class="codefrag">Query</span> object without using the query
|
||||
'the'. The <a href="api/core/org/apache/lucene/search/Query.html">Query</a> object contains
|
||||
the results from the <a href="api/core/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a> which is passed to
|
||||
the searcher. Note that it's also possible to programmatically construct a rich <a href="api/core/org/apache/lucene/search/Query.html">Query</a> object without using the query
|
||||
parser. The query parser just enables decoding the <a href="queryparsersyntax.html">Lucene query
|
||||
syntax</a> into the corresponding <span class="codefrag">Query</span> object. Search can be executed in
|
||||
syntax</a> into the corresponding <a href="api/core/org/apache/lucene/search/Query.html">Query</a> object. Search can be executed in
|
||||
two different ways:
|
||||
<ul>
|
||||
|
||||
<li>Streaming: A <span class="codefrag">HitCollector</span> subclass
|
||||
<li>Streaming: A <a href="api/core/org/apache/lucene/search/Collector.html">Collector</a> subclass
|
||||
simply prints out the document ID and score for each matching document.</li>
|
||||
|
||||
<li>Paging: Using a <span class="codefrag">TopDocCollector</span>
|
||||
the search results are printed in pages, sorted by score (i. e. relevance).</li>
|
||||
<li>Paging: Using a <a href="api/core/org/apache/lucene/search/TopScoreDocCollector.html">TopScoreDocCollector</a>
|
||||
the search results are printed in pages, sorted by score (i. e. relevance).</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
@ -375,7 +375,7 @@ the search results are printed in pages, sorted by score (i. e. relevance).</li>
|
|||
</div>
|
||||
|
||||
|
||||
<a name="N100FB"></a><a name="The Web example..."></a>
|
||||
<a name="N100E2"></a><a name="The Web example..."></a>
|
||||
<h2 class="boxed">The Web example...</h2>
|
||||
<div class="section">
|
||||
<p>
|
||||
|
|
|
@ -80,10 +80,10 @@ endobj
|
|||
>>
|
||||
endobj
|
||||
18 0 obj
|
||||
<< /Length 2732 /Filter [ /ASCII85Decode /FlateDecode ]
|
||||
<< /Length 2590 /Filter [ /ASCII85Decode /FlateDecode ]
|
||||
>>
|
||||
stream
|
||||
Gatm>D3*F0')oV[6HGK=`@b5dhYSnZ?A]F#m]Q('38F30=/Kh@AC75!42,'OUDI,j1?ir/,!^<co4@'PR:h8lI9PG)D/o=IS^4T(o0]_Y)$N>#1\UFao?>p0J,/D+hHfP*hb2r7rf?(,pP0l'5o=l:H7sLB]R*i;4ap)<TUW/fh>,q(%X*APJN#->6C=?hMll`GG6*'Z4n*oiG9:.5gJ#Ls,H&?gH3pA(]Z&3Lpd)[\:STUP`3LXKM%c^:+i;0(^^";H+?X%/3lpij_?[,f)V)-,PX]"%OB;`bI`2\SDV#h_$FObG+jnRgEhfY2@s4QT>>Zso8l_Q\Iq]:Ia%Ntnh]m,!d\(Lt4[MWgp+s]Y[9%DM[eF=2bV\)]didnoCaG[aC9&C4ADG.H;"9mPC1O`:B`"&aS,Y&5![Fq9V;=dr2E7WROBpV*O7Sb7U[fEfV^3o7B^1=#[F#5:j`tlp`?_I(_BO08;AGqT]Oofcs(!h'C!?A5s&[+#U6.hpo(`7j8(RN*%q8;+kg`\BG/e,6-Qij_aTh8+>@KCK3(m$mnZ+3,R_?(4K1N=J#$afj,Dm`k7>&8[U')ogeEo)Sh\m^H14*nGm#"7j7Y(Z9kmB/tb384LqV8gO_8cQ+H`LfMSAck8M,<k7[j=)0Q:N!8?$B/3STOgMO!!s$Ye,/eR"q2<S)V*AdQY>8[eZ*(7MQk4&@;Y$$=,MU<V9^r6'MR)jr"o3j2EMu`4jR7q&1V`Fh_/I'dP=mXX-/E[)Pjk*<qb=+f&p*?R,+?eWH+I?Wf'F.q$85:rZ!c=e#)ZfSO&^+3RuRa&h3[;8sfka&Of6l&(!Y!25X,O[oesPR]b8VI9cV_JI5NZ@M$aftSq#e6*;an@^tgHf<brQpiRP1+LNr0_Vu:Wg#C<D\%KL$mC_u`U]`;223(W,JV?p-!VgO.?u`5LluR`j<rF><u^D34%]TMD1afZ@2.+KpZdWf5oR"M^&m%1%"UlgW>b[dNjiJm<IoQ/-iR"%D\6T@phD23;JT81M$=(Q=6B5_i[^XAkjA1/$8^flf`5!-@WHK=BB"r%)cI;X4I#$"0lG(f&b+ejVYK(g]qq`e[]W3]X;it-1NK[@Mg'cQqdD%amr&Z<&2"8L?pWkc^qlmKjQDj[B5odC)>:.TU2rt$!G-9q$a.>FZknl,(<>W:@o5=:Z\Ejp!>6dM(>'ra"iW7V\Fuc"SJrj\K+j8iL&/ZJ,tULcg^6FlQF)jo/=Nb&>s2H8dYl*nF`Z)QncT#Fdpm]6I5.bd'!^24TN'(s95tdm%!UW*dTU@<5^1mq26FP2b/8/#d4J>I=e=!r<2[`9`m$+P]lDCGo#XKFjtL;R`Cu4kc"$%HdP":%?HT6hT=[ad0Zsul.$+CTeNA5nSl@>nW"%dS,mXp'Bb_*8iVBZ$*r;4]hRH:_l</q69d$kS`#BW:5^pbbOm&ZO.<2MUC84DM&F-Ofm.r]FMI,YjJrcK@[K['!&t.cO(4of)&+V:fWm\4m,![;9>I@T2SS2[P+XO/*;dXKrAq$irG4l/Y[,?4<%gs59JBu?2BT8,hddNjR=/)>KOQUfp*TKlp"?981@S=(dr2/cAq)pLOhm$TIG-`2oe3!!Jp\&[;iqNkL(*"IaqG[/3$ir>/$%Tmm4Tk]Y@ObXA!fgi2]%mq2cJ\CU>ft.":a_[Zc,2gIR?"G[/XllgaKjJkBD<"Je%r+TeiR0flD;EmJ8=9'*gC?<,ui+`)S0mq`3@5&h.YPd<J(H=\?R026s83OjT4d^ekkZV)8e`jEh$6N41Bju!TF9h2&^+G'#W?7<0/WHf#O(L9?]M._.A0-En=9Tp/*ZYL7G$I$^ZKd)2b"uj9hEqe]OKB+rV9_*=tbpIq*+6<Y/i%]P4MRSiJmEXW<s=%LMc$T=VT[(BRV2JV).s9m0U?I_tY4TkF<`&b2,->/8S^6?5<.b*.!N/J5HqU<AS\Nl40$doN#FD\qpLe[*u2g!D?\6bA/2Y4SaQ;K5&5etr;tL3A=5ret85eP)`q[M7jBlU%S<6kS8;#4XY`(n\"L2d'SMbSflQ3D>`*FiW`iJ#$P-$_opnO)lmeFu9`kpT5c\6Q6Ye<lk5]@c_nME`ti"EXVhG<XPWmdM0:H91./6W>p\&(8ikIZDB`Ue+l*!>PonF9$!?0F7Obcocn3?6+sXq^Kt3G*9?<LUtCM&0`XEid?abX.H5C@pd\jT@qIan'/H<#B'UKEEKsgeC>FcT]K"'..AY`To=/S35.4'e;2KWN4)Md+O_bBur8+.0XEM3t"Hl5FfshXh,m\$KbP%ZH>pW2sKdg\2iq]-UCFe3DOB0\\oX;bc3:?7D)\1$dEp6K)R9cp'WB4038IL$sQHn?rKQ'"Z]#25!#ZpoSI77cL-B9(jLn3e%@I[2B3j[!:)$>)pAoAaNKr7%r"86JdPs7"#$P2$TBX]YCd0rJm>83)oD0eO5hCrj9n->?l"TtZlIWn]M[0D-T5*4&k?bD-#_s>[Z$hq6A)3Sq@(5/*B"sFA!5%_YqIs678Bii]$Cln6Y%qP;XC/p?kIdE\`cj-0jg!64<6-WW^,PTbVj#MXsPK%+ifk3G8]$@?Tf/]5a'8%?7(A?"=FB%EF,6seNjTpp_+&IY"b0qb.J"@9<23oVp#;?BF(q09,muBl>2gkh+=`8:$#LeM+IPQo&b%)>3<;Z2u]kS$eHk2ise6jkJr_nYnfoRD56%=';`Y'o(qn=_(_X@Hf2Jqd~>
|
||||
Gatm>D3*F0%/ui*@I-YAiD+#II`oIu[WP\L?n]c$%(gr73D-$rYqk!-HMdB1r(9"JH:*GhG:1G*aG8hDMWt(cnbme(pVLRr.eB!uq&KWiq&T@5bk(JPF+<uN&)LdW1Z(jb#_#7Jq>3(+=g3iI/\K-C08o`#ipKP+"m1O3G2[e["\=/nJ_+auQLK4[XUj810*Cpj]+%t!04-rDVOj+H?;-8qeHT'(HL&&2qEZY)LL-B[`3LX+e;7(h&7o<(#WlUr,%89][+"'U&g&[*BiU#&Q3r%f7V\K>nI]]hWnHb[-<."m\Nl<"`EniLa4n-c*-f$)/S'^0^2%b?f,J^+h]R(86DI=leO)gNp+mKXAoHi>*,`hql=kP)\jkEFfhVJ1[OGG-OE9%*6,aqgZ52Ok+RrZiKYQUrNY+7-661bL!m\(QA9Trlj&O>$hKT.KYbcmQF]B*Mp?G>V*+,kO\3uWX=SVDgaIF3m.u'hp$^3;?@hqi0Il/5q)G.jk5O@;6Ogj2H:<i$[g0P5(B5Y_/!nr<[D?,1]SD9'uOJN%Nr$i'#js9<M+PLY-L<rip$"]88]Z/>%=b7'/;U)Q[T5)Vlo(LkR3#&d![=eNJY=lfA>HJCal@&8KJf"ShDlf'=Y#meg9U)RNW[Z:,PsFX(laHDZ0\WqTh7ZrsJ8O.9^cgcN9'>6#9E0Ylg?)VbH^X=C8^M.Xb#MSc=]YQl"]62B36\<^L)7%\&GnXqcM'<?b5?,H=-0ZJYa<;$<XK'4%N$n^)(B-,q$O+qRis:`]s;$*)IUId1WDpB=m=`_5Os1TmYY&/]?e817N%,_N2p>IaqXr4!(&.7U6$"D.308dVI]cR_JIMVZ@K%]h*4FqeCb@7n9obo[`Z.E0oO[6bG[<`K!R\TObKad?S)[]2_9Mb0=L$IY;#$.)=^;Z%H0@aFWlII6^2*p,N%gq^=l,]3Dpc7=rYC/>=K2>I$.P>%+9s.o,ZKXi!?\&)d22sEPCO]-$(&Q\F:</IXs2Rq+!O*(.t:gO4P51s0KF0OC,&fL-EAd8'?ke8_*pM6od72Q*YF"^l9eAd2s:0N&.&&\Kg%OZ);j6#ec5!ntrEXi@H!0I+7.$<J)S`f6uC4gGb-ufYZ`*aC^g;l['\nSPk694=38",rM^+!6SN*f2$EIo$af<WA"/cRmX>(o'#n8NHV<61t]=$^QF\,nhL9?h8Q6[&*o"\,N>=q<sZY7'c\1Y:MV3cg@l[%ui%pIO9GE#C\[7B^K`D9U`"(oXZ[Ao\$gfN+K/F8fL,!['SY45X->]0D\5tWPO8o^F)K"2<]*-Xo&hcPm*WO_qG]m3oSioqNd,RL5]-q%H>i^a"XKkQ`XDF,`[DQn@9Na_*ibhTfT>5[:YVl&\Z>k(eD!k%B\>(<Yekq/Hld$PebpS`@an;+8GE0Suti9s+[gWQJ5G.8ZS1j]ukYYq<d76V#f'GB.)X+01fV,PgC8c1'hqVltCm?@s2A&6XYO1`kDPfSrmdN;bG!4?S&@*9](0-r[!c)Ln+?@ZH',Xm*D<W2Coq<'-l=G=ZZ#WGfErT_COmX[Sc'2;^J'd0<S!'ns)k5\%hg&p8oDeRpk/eDq>f<@ECCBV,ciDPeW'hq94^*q&C8)'H&B[N(W#Ba`X*E?7a`rbEWDY70IBo?/4T]*etW3pE8KDe2Aqa4j#W5[sO5WiR-:fucrXr#Xl1&6U`TFE2ZDENn8LcRf6i1jK7njkMHH\*_f,t6OHE*8%nU@15rciNBl1tKW0QA9P+`;WoN*(A3&@LGK]R`*KjiO'&9!sDN\G8q%0$bWE71sPF'DpHXG.L2f(:tnH3;rr'M(_CMQ.+hi#jmRrZ,o6T`-CMJF!caPQ&+$_H8Z#D/D2jFlnd)XX9(,k@MdY?lJoT83<7(T<7`?PsoGp&)`n3%b$BF=Z&;@t-]2+?Q_[nNn[L)OgR68tVAugP.KDI_;-JT2Td\eI2V\oIlfM<k)>-!^YPZ4,WPp`7S.?a+qla&8g,I\HR/@:6?lruTGQN[p^&Pg'aJ^t%M"e_)u>[Jf<Hescj[<:aMXO+nSc;uYt*-Y:V?`M;:1!#1Q]?P_5K0-buQb/"@K_).cJo%\.9$9a-D<)J>Wq.1241u)uQ)JctnB,0Ohc@5hJWM'i?1o8!jZti4mDOq&<M1kYF\XTZ%ke+@+d]m@Yem_nSHUI@,U7/2la!49M2f]gHIgqgdedjiK(c"O.@c#]!U9<")%JS8-X7Z9P5`C>G7A$2H6'Eh:(/4%B/lnA0J*5"B/]_PHgq0*!sb@W"rfc\TF29XJSbmX_D.HG-sLMH:o?/n9"WmAO'@7\B<*kb6GFSbb%ITRAltPJG@-<+Rr23_9*ma;.*!Q:fGlFu0+F3u#ZpuOXK?\97[ep\8VeBB5.W&@HX=ga4Sc.NfqSf@-f)dT+4)9m$nT(t2['V_XJBi#"S>h6Rh=S%(]ah^HXa3hR4URC$V5VcIdT484>]HN"Fc+U<9l5t@e>-R!bd*b8aHK%5o=^<^/`3$/U.(M"4O@EGSg\7.eN[M>4m$Q>9Ho"om=*Kc[C7d:YmMh(*C<#m^I<bZ<O\K=(j2DZ?0ibliVG2![4<*pA~>
|
||||
endstream
|
||||
endobj
|
||||
19 0 obj
|
||||
|
@ -95,10 +95,10 @@ endobj
|
|||
>>
|
||||
endobj
|
||||
20 0 obj
|
||||
<< /Length 2312 /Filter [ /ASCII85Decode /FlateDecode ]
|
||||
<< /Length 2028 /Filter [ /ASCII85Decode /FlateDecode ]
|
||||
>>
|
||||
stream
|
||||
Gatm=>B?8n'RnB3i%<&EK0b;t+$.k/S$kE7STa%acH^#DA<:Z9(qC9tao;-"J:SpR`"+r#-5P`7kPCb<..<H<^FV$e?F\PjrdVG6*S[iN+Fp*6Y<LjR5(R'u>H<[c([mY+M`]g:X%1A+Ki:W)nB\K\8O'E]LK_llp%MH1o0S;aK&nP1rg,.Kcmi1GB9-jPeRlYk/D9S_<[KrlbtD7(LMQe@qSue=3nW*VD;&n*=iqg1hcsAEUt5'N?)hAW<W=2,LV-t#oGQLQE['PIqW5%7qh<nL1/$#`o>*&eQA`AbF%<:97u87A`)Kq$.=\poM12s\\F,%K'4FL\gDpVK1?E\/r,O<0^J[0CPnoF.e8^/oUtoWgk"-^AEebFBIJ2I"'?(HLSo@a\i2Asl_9j2Q7ntOVp!pEZgrT1_Q0oati0A?'o4#uq:2#E[A0J53S/$)gTtY:IOh&:Ga#5Pl@bYUNjQ\i%5T@P,44pYFp&fB"1JT:dJ.1OYe;'/r-r-j/X%$S5;Me=bYIL_m)3&l@_T''kV1b(!MB7#.RGXNHW?;"\e6,r<6"Gt>/]<ZFUgGI4qIMHDRUc;=_=GN8@"l'_;kB$Hl@k[f4e%,@^lk_[^F<#ZfJK/R+gL9.'UumenBj4.J:jWRN(B#H@'N781R(.Z6>[Q;B9ji`,24!X,1SmmQcRXd7%(DpWXqai0kK:(KWGq#7@kFPoUimb\hN-?E>%gNYKm_dj0p0!+nlE2>oMFJ.5fhlHlD[Vo+pS'1n95->TRu+S>/F6QcK?B1>.\WgscgOPg&?KOISZXlQCjFM@:SP"pCa7?m<M8p_UAWa"U\.>)p0$\m>Vc#GELrj%jJ=nmOoR&C2U(RR'^=8IMb>D23I-XC+.fkL5:!^k50gRe*M!prDK7TBEF$U,F#!-5k9YU)_*2SjH.q:kB6g-#hj7AO(\*V'knQ=l=uf.]_@J8LIQTJZ[X(W;39"7rdU7<qVrnDY;b.ilJFT`gZntNt5:/8:?8$7V]OV2(3/E[5_(21j7j.TQ('&*k^Z0-!R-$.`Be<AV1Uo!4XE_3Y`h\.Y!s&Ri58a&2jm.5SVu\L(/]'9<?bo$:3j39Yibu`iJiH.1-d^RRQ_>F9`@nN-`S7QL_'`^(.nY/:&>(Om[cr(\o8;O:?Z#mEI\rgV1L?,BqDas9Tm<e'o.9#Kcj"rN4PQt_T15$aP%U4Km(:t8OD`S%So-!#E/to3"GU_VdZ>V-N#l-I)U=?N?UHh8kW^10[8?k2,d_PS3^tA!hajou!VY$rs$&geA5]Wk*rN(0!5ZhMia8Q=,WXDfR"V/Fa9(nn3";hYW1"r!CM<u^-.2<CT+O6obTTcEJjU;'0%Y]X$KiSF:lo&.53\lmJ%bmu'e(9s+jf&9*`h"/??`lm^;"_1RH)+'1AjF=Zo$KE'r!Ngjn\Q!d"=CXFm.(ltjd-Vc?%N6HB+JGmi!5t*0]Qp^VjU\XSB),ZWG4h15dJG1hXmH#FT;k<=./"IY*Ie5M]6O6;fl%=BYuV6&@V<<Ou'n^#=t8RL3g;^^c)V?n$4Y2)8d1s9Ebk?m*:i!McD\#5nAFQG_^Fp/%JMn[f`q*Yfpob7q`a1T2]\'Un:3YoH)We55(h3nXSN*Asb:f1eCBD8j-IIUH&#MBT@<i$p2BJ6E)tAnXQ]iZCLJRc2boJqYG)-?i:D`JOh(pdo6r+;F+FcYA?t'DOU[:2D@gNZ&[jh.+/60FBnD=YCl\+QqRp&.h&(H4=Q1[,&feJVdd>oJIZ%f!8-VhUUn88/b2"hrr`qc4`]0V`]KQ>2@/C$cG<!6gR^oo/O,-P4YXHnk*a,HJD/sI<0sWdk8<&H!IZenP`bR4*=^ECgBl6YM(uE>42!^3X"+M"o>2!r35Z=2PSc+Sp@Rlc+LGd4AcTQLNTpC+brVFB;,LG&]&;tBEdoU'Zf2Qe-dj5iN-k,gh\_$?%b+JCmb*>1e<%(;`k/8pi#Dh!j%NZmK:"f,#m=X\pe\a>*inV;riZ>%a7MoQ0,$1TSNT3#&>jH&1fjBMW;DRX:5<320Yj&%5o!4H[-GH*:<j_'M,0cMK9ebV9\AnpDr,U36EJ8*-fUic_9``80;7[G]i5pN,fX7X0T^L>DN*+-VF=rV\HSjC4LbV3I(W\NSpb,%O.0UZA@^A30a3onMRh9f^45bZ5eCA`A)02`*Ao1@JC$ejTF=Q&4lcq$Bfl\n!Q"EUhlC#>\)Y95+pr4-S#tPjrNd-+D%/mA<$s3dh0qd4-g4XP/8,g?V=j[kY)C3&baKo'Z@iOk]:V9E24*@JU-;eV22=s*=C6cjNr'@#b^c#~>
|
||||
Gatm<gN)%,&:N/3n4iUM%.Seg6Y:A<dr^aJ;QH#Ge9uj<84#WT$:%d<^V7mLa9<#4Icu#m$P]ku4kMoEJ2cf50C-T<L$.g\p\c:WM<i*"%"H0nrI!]1.7kQ%SB^':ilueS\rIcVLMtbuL"jjmiQ$$9R8HXe2g!UUkO4=6<41eV's20Fn1Tu?V.@=:7doP5aPD^pBte5\ZH67gqNhmt\!Q1(q8ZY<2DZ=@,Wm%F.)^=9m4Oq[^[pu)gW4]ejRf)VVeR,ioGQLQo6AA`9Z%+_9EV[=9j+,D@l#X+Q`KFgK]DE=&GdYFI,/LC($tpjaOT[smH$;fH8IYS,N?rqkFu?p>(40JC)T[02cB0-Ad$ERM17FiD5t82!l:T*iE/9;j':#2W@W!'*1!UYj:&^f.g/bFn5n3A01=S8=B-T0!\_T-NE1<%[b,t[23g0Ngl/c+f[fpIm9m`l5uSIAXm(4QZg3bp,u],#fS)6\FUt(d6KAPqoYeo#r!fip$'?Wo83/(l$a-qm2*We<cBTUB?IlCjiktbrRT?u-pC`rG$<EP!qFS4C.ER0DGJ5SoYEILS=kei\8r5L!MF4&oR;nilTF`>uWBUt37*H#q+6PF`j?pUKQrF.Sq2rggk=nOE<b):&Ns"7?d*,1U^GW%BOB"8G=Gb(ZJ=[R.Z$)koS*8rk18g7B:,,ho(_CUL=4Iq/Ht`*L',@^52q=96G$Rm0<1E67Q[$Vbe5jD#b"IF^re9Ao:eUtf&k8h:FJ@+q=-gq[4[&:LhBYQ?d2S=EO93WE!KQQk\dt`<RIa$Tn3[TFYNnt+&b[MNb*$ah7;>3kqU%jB)icj]8<*AtaR5r2S#41-XsJ"-'\:'(5f(r1I64"ZOu,hf^hNh(T%Et&gamRf\T@+Erpek0Ptg=.`#k6R1tj)%UeTinU!>@j1cHZ\cqG7&L_.4-<9ANZSQh7RfO[c\Kc*F^3$)?rHkKW$Q0(Bbnkrr\FM.psU=r)+p\%+pEPq0I+g^7J;=XgS>c4a1U`1J.]5XD%2(Ar<cs7F\4u2rNPZM:`O`6-C"r^0$Aat(CN0BgeMpn8-:;JZ9l9L?Lap"=h:Eq`8^9(9h[S,+B^,/MII&9dr3G0s3ZlkJ/+ke%*7'3=$%N.bB@RAVNa_Mlp*Hh2a591qA>9%12"=\us*En!3)5F`FZhrpA)B_!r3jh(c5U-\n4.r:rp<^Be>%;ZC'eaQ>X9u'F24G$CT@b@NKIgqk<jI@fdqf)KO?q#M^#W:9/EtTQomTBY+n?q]QBpX!&AcfG&&7<I1Dd*o!2UfH/9$,aD+Y6+<f2Ok?'O=sDL4YjTr@,LB#)3?7o%NSBAa.3q!Xs.3\/00W9LM"MiXG8V>(8\CRk8l.<^jq%\Q@5>3\4/'V)GhV&$UQ*t/1^_+8]cnI"%h)eDfN,?*7Ci[;+-91r=5NCJ^-K<qH2PE4O6rR#)8@h%AbRHW-&A0OnS:q\d3RL9FY$)0]Z_$KS+5)d]n2V_[Q\;.tBD/C(:jB'1,>L9nT#R<2`?5fS5P**h'I6W<4Si=/[KAm&C\3i[WHM[CP)JUYg;#3,?=^.=:=J7Hbgo)N^O[r=cHtVCVQ"rEuMd9f!79>E%F43&:3#HoLb%RZ+MPj2l!PB)81&FXg3adI&`IUX$/WMclj)EX*5\ZmV-Q#Zq0ce9B6oi[9;b2s"+glMQo9pNC$BgMOAoQX6E0S[NO\+aqGO<4n\f1H1Ui>7;,XtDufjZp[_3jQ_;+*;XqT:_+l?XaPLfG;hR89PbeE4IM3rKr-fMAg@!haT=$4XK>lIDq:j5#:TUnG*Xdh=AWSt?Iii9iq;2#u0s-*`NqDL?Q&NS[LNF7%(2:^l'1)c0JNXi^A).kSMCeU&a6h-Si7J>@81Eta^)!uetN;%(D;%#/C'-4?L]LKL4$FLM@*K]i&"_ERff(njT-08`:97nss(/7*8[XZ/L8^>!iOP,)BhqN3^rI+O@Ud?"P1!(#=uDoB(J%;"*T\J>WFrpf,bR+>Vkon..!KuOPtfj/fEEX(qrKlMO.~>
|
||||
endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
|
@ -227,13 +227,13 @@ endobj
|
|||
15 0 obj
|
||||
<<
|
||||
/S /GoTo
|
||||
/D [21 0 R /XYZ 85.0 507.0 null]
|
||||
/D [21 0 R /XYZ 85.0 520.2 null]
|
||||
>>
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/S /GoTo
|
||||
/D [21 0 R /XYZ 85.0 290.266 null]
|
||||
/D [21 0 R /XYZ 85.0 316.666 null]
|
||||
>>
|
||||
endobj
|
||||
22 0 obj
|
||||
|
@ -244,39 +244,39 @@ endobj
|
|||
xref
|
||||
0 34
|
||||
0000000000 65535 f
|
||||
0000008704 00000 n
|
||||
0000008776 00000 n
|
||||
0000008868 00000 n
|
||||
0000008278 00000 n
|
||||
0000008350 00000 n
|
||||
0000008442 00000 n
|
||||
0000000015 00000 n
|
||||
0000000071 00000 n
|
||||
0000000777 00000 n
|
||||
0000000897 00000 n
|
||||
0000000950 00000 n
|
||||
0000009002 00000 n
|
||||
0000008576 00000 n
|
||||
0000001085 00000 n
|
||||
0000009065 00000 n
|
||||
0000008639 00000 n
|
||||
0000001221 00000 n
|
||||
0000009131 00000 n
|
||||
0000008705 00000 n
|
||||
0000001358 00000 n
|
||||
0000009197 00000 n
|
||||
0000008771 00000 n
|
||||
0000001495 00000 n
|
||||
0000009261 00000 n
|
||||
0000008835 00000 n
|
||||
0000001632 00000 n
|
||||
0000004457 00000 n
|
||||
0000004565 00000 n
|
||||
0000006970 00000 n
|
||||
0000009327 00000 n
|
||||
0000007078 00000 n
|
||||
0000007251 00000 n
|
||||
0000007486 00000 n
|
||||
0000007652 00000 n
|
||||
0000007847 00000 n
|
||||
0000008042 00000 n
|
||||
0000008155 00000 n
|
||||
0000008265 00000 n
|
||||
0000008373 00000 n
|
||||
0000008479 00000 n
|
||||
0000008595 00000 n
|
||||
0000004315 00000 n
|
||||
0000004423 00000 n
|
||||
0000006544 00000 n
|
||||
0000008901 00000 n
|
||||
0000006652 00000 n
|
||||
0000006825 00000 n
|
||||
0000007060 00000 n
|
||||
0000007226 00000 n
|
||||
0000007421 00000 n
|
||||
0000007616 00000 n
|
||||
0000007729 00000 n
|
||||
0000007839 00000 n
|
||||
0000007947 00000 n
|
||||
0000008053 00000 n
|
||||
0000008169 00000 n
|
||||
trailer
|
||||
<<
|
||||
/Size 34
|
||||
|
@ -284,5 +284,5 @@ trailer
|
|||
/Info 4 0 R
|
||||
>>
|
||||
startxref
|
||||
9378
|
||||
8952
|
||||
%%EOF
|
||||
|
|
|
@ -345,7 +345,7 @@ the jars included in the <span class="codefrag">WEB-INF/lib</span> directory in
|
|||
</p>
|
||||
<p>
|
||||
You'll notice that this file includes the same header and footer as <span class="codefrag">index.jsp</span>. From
|
||||
there it constructs an <span class="codefrag">IndexSearcher</span> with the
|
||||
there it constructs an <a href="api/core/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a> with the
|
||||
<span class="codefrag">indexLocation</span> that was specified in <span class="codefrag">configuration.jsp</span>. If there is an
|
||||
error of any kind in opening the index, it is displayed to the user and the boolean flag
|
||||
<span class="codefrag">error</span> is set to tell the rest of the sections of the jsp not to continue.
|
||||
|
@ -358,42 +358,42 @@ default value. If the criteria isn't provided then a servlet error is thrown (i
|
|||
this is the result of url tampering or some form of browser malfunction).
|
||||
</p>
|
||||
<p>
|
||||
The jsp moves on to construct a <span class="codefrag">StandardAnalyzer</span> to
|
||||
analyze the search text. This matches the analyzer used during indexing (<span class="codefrag">IndexHTML</span>), which is generally
|
||||
recommended. This is passed to the <span class="codefrag">QueryParser</span> along with the
|
||||
criteria to construct a <span class="codefrag">Query</span>
|
||||
The jsp moves on to construct a <a href="api/core/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a> to
|
||||
analyze the search text. This matches the analyzer used during indexing (<a href="api/demo/org/apache/lucene/demo/IndexHTML.html">IndexHTML</a>), which is generally
|
||||
recommended. This is passed to the <a href="api/core/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a> along with the
|
||||
criteria to construct a <a href="api/core/org/apache/lucene/search/Query.html">Query</a>
|
||||
object. You'll also notice the string literal <span class="codefrag">"contents"</span> included. This specifies
|
||||
that the search should cover the <span class="codefrag">contents</span> field and not the <span class="codefrag">title</span>,
|
||||
<span class="codefrag">url</span> or some other field in the indexed documents. If there is any error in
|
||||
constructing a <span class="codefrag">Query</span> object an
|
||||
constructing a <a href="api/org/apache/lucene/search/Query.html">Query</a> object an
|
||||
error is displayed to the user.
|
||||
</p>
|
||||
<p>
|
||||
In the next section of the jsp the <span class="codefrag">IndexSearcher</span> is asked to search
|
||||
In the next section of the jsp the <a href="api/core/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a> is asked to search
|
||||
given the query object. The results are returned in a collection called <span class="codefrag">hits</span>. If the
|
||||
length property of the <span class="codefrag">hits</span> collection is 0 (meaning there were no results) then an
|
||||
error is displayed to the user and the error flag is set.
|
||||
</p>
|
||||
<p>
|
||||
Finally the jsp iterates through the <span class="codefrag">hits</span> collection, taking the current page into
|
||||
account, and displays properties of the <span class="codefrag">Document</span> objects we talked about in
|
||||
account, and displays properties of the <a href="api/core/org/apache/lucene/document/Document.html">Document</a> objects we talked about in
|
||||
the first walkthrough. These objects contain "known" fields specific to their indexer (in this case
|
||||
<span class="codefrag">IndexHTML</span> constructs a document
|
||||
<a href="api/demo/org/apache/lucene/demo/IndexHTML.html">IndexHTML</a> constructs a document
|
||||
with "url", "title" and "contents").
|
||||
</p>
|
||||
<p>
|
||||
Please note that in a real deployment of Lucene, it's best to instantiate <span class="codefrag">IndexSearcher</span> and <span class="codefrag">QueryParser</span> once, and then
|
||||
Please note that in a real deployment of Lucene, it's best to instantiate <a href="api/core/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a> and <a href="api/core/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a> once, and then
|
||||
share them across search requests, instead of re-instantiating per search request.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
<a name="N100CE"></a><a name="More sources (developers)"></a>
|
||||
<a name="N100C3"></a><a name="More sources (developers)"></a>
|
||||
<h2 class="boxed">More sources (developers)</h2>
|
||||
<div class="section">
|
||||
<p>
|
||||
There are additional sources used by the web app that were not specifically covered by either
|
||||
walkthrough. For example the HTML parser, the <span class="codefrag">IndexHTML</span> class and <span class="codefrag">HTMLDocument</span> class. These are very
|
||||
walkthrough. For example the HTML parser, the <a href="api/demo/org/apache/lucene/demo/IndexHTML.html">IndexHTML</a> class and <a href="api/demo/org/apache/lucene/demo/HTMLDocument.html">HTMLDocument</a> class. These are very
|
||||
similar to the classes covered in the first example, with properties specific to parsing and
|
||||
indexing HTML. This is beyond our scope; however, by now you should feel like you're "getting
|
||||
started" with Lucene.
|
||||
|
@ -401,7 +401,7 @@ started" with Lucene.
|
|||
</div>
|
||||
|
||||
|
||||
<a name="N100E1"></a><a name="Where to go from here? (everyone!)"></a>
|
||||
<a name="N100D4"></a><a name="Where to go from here? (everyone!)"></a>
|
||||
<h2 class="boxed">Where to go from here? (everyone!)</h2>
|
||||
<div class="section">
|
||||
<p>
|
||||
|
@ -423,7 +423,7 @@ Users' or Developers' <a href="http://lucene.apache.org/java/docs/mailinglists.h
|
|||
</div>
|
||||
|
||||
|
||||
<a name="N100F1"></a><a name="When to contact the Author"></a>
|
||||
<a name="N100E4"></a><a name="When to contact the Author"></a>
|
||||
<h2 class="boxed">When to contact the Author</h2>
|
||||
<div class="section">
|
||||
<p>
|
||||
|
|
|
@ -128,10 +128,10 @@ endobj
|
|||
>>
|
||||
endobj
|
||||
26 0 obj
|
||||
<< /Length 2858 /Filter [ /ASCII85Decode /FlateDecode ]
|
||||
<< /Length 2630 /Filter [ /ASCII85Decode /FlateDecode ]
|
||||
>>
|
||||
stream
|
||||
Gatm>D3*Gk&cR6oK%1\7J2>+;(\C',2n_&%"$!]=+NX5n*jq.h7rjk@H*[;44!Z+mB!of\e&&>;Ubo]ioCC*]ZhJHfpUBhOmruLPK>6=$jdtcu8Wpm(;;D3L+n@`SEYN_hms_kF\A%k&0m<Hp5$;gm]Ks\m5JApG`eg10OgD3\?f)[*DHbR*D0,/n#_pmdZhiPSQa?Yr/<`lQ>aFm>fZga]Y4=rniEs?=VM[N<PAkmq*5mCIlbZ0>mcVjL4^Zi)aJ8&)7)/UH=g1rJH=?P%pK_,BDYL6'G<[inLZZA[Yn_XB^Cj2:)6Fj3DM5+''t[3MR^p0jLF(]jMhm8&o>X"2M2;p:3bbb/r61FhC4;COr3b#On,i<Y-_*R7]GC08F3a\X0`(ruDTt4Z6usd0WAijVG\XD.F+_RNd]um)E.t^W=MFM\A]_1d[O'Z[KbIQM#ns>Xfktt'A\kbc5&eE%--2L!=^!X`]P5X),%#,1d>(V@_cMV,]0+S@;p!r(5BT+'\?2\km[Cj-kHUL^^A4^<V1n%6I`@*c.^?GDeH+\?2V!i?OIDhtRJFBiU?,"O#M\uWVJp)>;*.!+os'4fBo>pP^ig:g:\S&V)(a3k`/H*XpPOA6<JN,)GL\LYUa6.0=(7(-37Wc<&Rf+k\!Js"/dWF/eC[=0[gXTTneoMT=Xe%0U)_.^@8H9%2_r?(WoB]*n1=`8bV)5bN].`Kb.9_6+_@ke7BN+d7nJ?pTKGrY@Qb*GlWCWLasD899(b9QdQtuVZ/Ja@0l2"*>%2?VqLboumZfo/AY-!BK/HA)R7g$Yi9crU3/&Ba1Bh&n2k5es_GJK,a;Ik_n^/7XTiD+[.eB+TE,&:m.TUH!H@YXcHSa4Wrf"7#/&#*UQ/eThCl<pX@XH%G$fs*dP;o4-Hta`qRG*$mZh!bW7Cj9^Tpt<;,`'JuDFF>eIr/%^YP4@\nZj$k/(ObL[06Q"c@D8d$MI1aSN\;[H1UZW_1&*@]6ToCN<ZQ`p[sT>((HV?W@msfO%S2I0<f/0M!oT5'e;"`.:1)qiir$o(hF:YoOs7?>OiaV)[R;DI*LM*^c#U<d#EM>\2o%MW`ea-;Wo!?;-$<U"[`Z+LUd@-+egB+1SB3Ka&k;dPbltuo(b5;Eb8qaR@*LD(YQL>UlgoO;BKYW.'2[^dbl^(6a1S[hkBW9OKV')<R1hoh);=1J.;Hm8Pp:82hi<sfh')&K144P]g_i-('C]o<J"g9]5iO0r/)0cNAuW"lXLAWGWGe%N.unQCLV68X9N)kP`@D3'`*q26kN_:'lD'Zg]8p4#sBj,dW5n(?mpU"4Yk@.F:ik"PjKO(6*h'h3bNe9-c`1O(k@tr[4HhUJ=$7+c]!r`-S;_,.nE\m_*s`e!8eYorCsfkP&$a'0!NV[nZ9^\4,S"+ZIF2i@1%m<1`&$-GRZMLVf4B9BM@d6hS$WX'8jS5;5PjcgI*Lo&fKoMP^pL#8tO=(G2eeAm-m+-3]/.Hpu&/%b]nD%=0ZY#I+ibDeq[60U0bpHeGW2D?^RS+(s5]4":J(N0,@D>9ZL9OOh%;?.=&VE"Wb/cT\o-N+`<U$EZpZRmmaGXSubfrPJqL"GaK"BS6ZTKYb-s:WKpWb`Ua;9g\S+[hTF>eHCMc,bRe?pGNG8/j1*@0'D/P!'F>Fk#,+Oa;r28EKRq=R>jEiNh<gEe3/'ts;$Ge^N?HDM?^I15">BMg]PJF@niu_Ru=r?u"+6'nu#>p&R[7&^J9BSIt3.!gpT\3CLs>m9(.uTpo[,h;l1hc!;U`rOcI#)c<cS.=j'P'#8))Z6Q+[Mc$rM2.VeU^76F"_J*L*(L\0F.#dfa)'HgYY?kshXB-=2\Rr:(2$4"*)*OBR0:oO\i^>7uZfJ(+mgYi8"5VCG7Tg-$RNT<b1)LI^El(@0O.,(Fgn1^!=KYIcY6I&"dNX)8FQu(A,Ea1qB;kZ3o"dSIBp8OP=^h]:Y;elYf7kA>H(r?qH1S!cT\h*J+RbE(T#k4Z#Cum(ZFUdP?1_b0re/:K*:d-N1R][Y[p:e5(qUmI)_dD1gt&>!3HXMsW2pB0".-R(21*2Oi'T=f@tg'TW?mdQ.1Y^EBq#?B>g>7WAVSQ'd;>B4+(h,VoHs0MbO1_D*,]Mb1WhL,FSc"^hs^T+]f^?U[<([VrptJL]\<nTcqQ-:]70,C+hcZ**G>chSd%NRL<4\/"MrrUP)RFmV[?Z5Sfl*]H.gf)JUG])+?.RH+@DAeHDS:^jst)E<K@dW1r.%u&>-;R7eB[p-f:2hF?K;6UC'NjN#"U=<e=TNC0V1V.VAm^KOboHfMpe'h4*(si2(=7[XktE4^o>K^U!-$g?(F@OO)^UcV4<.bKf,K:QchE)Vm64m"\Z2>Z%e]o[-=adW_0W?EegljUE2=Yb7UUs+0pXY3O$*H6(_Baf2!I-,\1S)_W9+i6?l:De1,*BB%UH0Jk]j0tWGc+*`$P55-h3kQ?B2-KqkO5.U*`Dk5)Y;Sl0A0*O@m/6[StJ"E;,nd&?Lit5o0Ybq6T,Wk%C'Bg2b-e;mT>L!gAPi@C\jkaFlYBIRT0L":Gn]f5=M6W<F5CqUN1(9S[6b+<4PG;Nm6AjRj1IY,\AWD5rP$@`gjt@S?HP_63q4B"Ds5l%T5h@MT;BYsfOH59HHXOf0l"TGFBbFZe7UCKc:EN^q7dTd04'kMLild;Oe%;5bPU-6YJi"AOE$UFhL@s=Em]F(6=Of@%"X#'`cU[eYDRlVR6Y$J[)dNLTKa&kn^Ha[Sp/;Sc=Thdqa//bb%jrZHq]Y.OCp7jiqt!bEH-,u+*pJUoaJ-TD(V+CDB)in.4@8eO)1R,AM2bR<j28*FK:[@<'g(=FJDpJ0'nHIt~>
|
||||
Gau0FD3*^8%fSZ,_TeG7!4+l(gVJ:d\o"o0fE0g^!(G;G%uRJ7lI],egG>>uqP3Gr-5FXd4']%XS]J&]nfdgjPigfam^pa"T6J#ULS+&(et21f8Wpmh;;?YM)eQ&g3/TfP]3k!_D=7Dn5'Hi(^=hl@]O@*2s*SIL)(0=]7F%cNIfD0iFjm?CDju+:D(r'b-*-4T5Lp#<r/!4p+1Ra]^PMS;O4j]NGQ-uGIY*R2e&I_KK@Fsp/>N*"IbbMiB<@9g1c`:=*.jWI5.Nh\(<OFTm*1[U@OHCT58*X@E$HQ(kXGi?S_/.$ONdZu3A*i=^k7G<G7f![!g2J5-4AU6.>_Gu48dfH*]sIP<5WFmOk6>aCW;e""P=gC\2DH/LuqgF;\.o]4G>9gK2/k:QE@_&3t0$tP4uC_Q5jD=/(oBnSH/%&9W/Y<h!Bd<K'Q!1iJ&R&LebT6/WqX@Zt<O)f,C7TY127rlJQNG5qOsV%$pB]f0bSQMRqiNl-4Gn]@l;jpI\JTCHgZ2#)7rPg6Pf1bS:tp4i*4HckFJ_cBW(R'(!I.I`iH!bhd-uiFD=\aIRK6A<(I:mf.O8\XihahBcc'6+^4bZ`#p<:u,,UD@&sTK!*%J*'':=gDOF.bL`(<#;1!7im\g@i@P-Waa,;>B3#?XZRA9tDqIF(fo/UEMl>:-$GL##`;BVrl?He><S$9rIhDrq-u)J#SL"`d6$euE`Ms;m9s%W)jUsXWV"tO(l)<[L.(IfN%&9ts9.[32IkWA>6-0qMbbI%@YbpY7F6\R4]KL<SVmJg8VPHk(_m.iC9\$4rQm&F?X4G?!XU5b?RFg5Geg-GZXP@sk5j=@(B!)U@R;4`^I]qfga%6;?Mk+I[d#8b<e3`pb<IA)Yo(3`aP;qFom>^Jfo$8oY`!nFp`EFYnbsC9!(.Mk:dSU3%3bkT:36@B)YnI"DoCIaXH^$Ep%K_QK-/J0].op+G:ct(E`F5U[Wh;Af,KQJj2'0TO8UT3+TO0a_:*5muV,/VGAqj4;*pU3r`iq>kY3d<-L*3=BPMI0_fs%b:Q5C40abe[nDi!367P-K,faH-KV,GV1h(XZK*im#8iH<nVQKl";\Xk88]^1qXHYErq\$0(pQKB=%ZG?6"F(L"5d\o[q^l![2V/DGaFNOc;"o\BFEs$h3BSPUnH'oG3bPbVOG%53rW#DB^q-nmq?VbuMg1BYY:DaAmh@'1:lg%L9S1\$oZ>/U]T'<gT,31"j87u<@,M>RA.]dRVpeYMd.CV3'3/O]fJfO6#;eAPEhQ)UdGBIL;_It:r+)TreOBQUVj^\1+9"al;LjW\mTV1u!P>*u!`qSJ\gLU?U'h7"Q;+6%eC1,1(=(ONDJe`2c<U496#.s'(/9U<"89IkYAW4,-\Ah=C5R4R81O[>5qOCcie<8F1SCaD^Kkd\P/_Jc,GSFe.fZ3r?+a=.Bqt_9@S&%ot^)50#4C!V?S6_\h?lQhA;(]%q#M\:i<%H2mSoD)J"S/.mh09(/>S2Zd&UC>:0sX-5L?R8Ue?g4%L\O\,Zs7B2])D#ONc>C06:M-'`Fjd=mJ?[Lfk9e_"adPIZ/qNSO=lX`dr)iGQ$JtEY&5=<,8lS:]U<-Q/qAuf`qUacNKm5Q4_HUBbg>,]>ii5R&1H;UNc`^8D0A6'jIEZ+3a7`PAn0oH0M:NL]ooS&OVlr#oi+;*]$g0JFn(f&UIL=rg_U"T_5!kS%`k.tH:$oo'LNq^`,F-CP3>;"`Kc^%X0@1jBn[O>2:Q:ic',#CVm>%)[>$k[bs.Ma-jA]W.JoOPr[:8cc;8jbn7*nCRaWG[r6XQPY*"q42[HN;3GQNf'*'Vb>J]%FMZQOb"mbh$n&CYfeiD>LeBHmrJRilt&tLPW>fh^?3n*@]EMtU\[X"P2EE8Gm;uH$a4s?_s\MFOIFGjV]rSeg7Q':BClc]a-rcdH#rU8BCB9&b\Nr@.NIIE,]<'c"\F1J+;A(M59E_DZYIcOhm`ro4;YJXlb1I5RAZQs1<Z;Wb1]LQqIB3t:*32G51%rue.7"*OL>i\M(&^5H3<2r,Ae*0g:91!I?MF-t2!k\JtW:^!tCJ0O<I#Ab(Os6:KJSA*h0!`g97oSm']\5d3@VhSD%KtmXGK.GBkO3C2_*>9k=P=5n-qPJ8R'YTSQrpb,%;DgL](DNS%!k1rSXoEjf"''s7b^+j(8)8).%02@NRe72*kYXks4/`IL(k_\#t(C<bXZdS)S3;^hTH512[=1]l&DHe5h@6pGc!Atq+9SB+>OM&3Cs1rH$k],&CK,\Yb+8%T*Has))]^4!OugES`&io7kn2)-VftSK.Xjlo9OF`E1t(*Q-BqO9)F+dWLrsQ\8EZn+!tN)0VXXQ1]9pkN83QhcT?/Uf['@#ZYj\*0Im*3JTUi=E8rX^aKBT%i+-_I-$K\RM'&fh\\C>6HjkrjFk:=?>TbAShNH8Jer1)&4o(CFP!&Lr;tKYJf9t?Kq*:WN)5*$I53q4=6/:e3]BJ5nFb.WWd^(DFcQ0j/@5tY@!A$E<&53k8;2kL%_sd2+&j'5!W;,CNhoOhLM>^kULbp%Z'#ac3$9Tu08*B2oEI\T@`h2=pI6$oTpuFRp-cPkI&89dBDEJD`]c/fjrM@q]#^ZU?5Or;V49~>
|
||||
endstream
|
||||
endobj
|
||||
27 0 obj
|
||||
|
@ -311,13 +311,13 @@ endobj
|
|||
19 0 obj
|
||||
<<
|
||||
/S /GoTo
|
||||
/D [27 0 R /XYZ 85.0 258.6 null]
|
||||
/D [27 0 R /XYZ 85.0 271.8 null]
|
||||
>>
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/S /GoTo
|
||||
/D [27 0 R /XYZ 85.0 153.466 null]
|
||||
/D [27 0 R /XYZ 85.0 166.666 null]
|
||||
>>
|
||||
endobj
|
||||
23 0 obj
|
||||
|
@ -334,50 +334,50 @@ endobj
|
|||
xref
|
||||
0 45
|
||||
0000000000 65535 f
|
||||
0000012795 00000 n
|
||||
0000012874 00000 n
|
||||
0000012966 00000 n
|
||||
0000012567 00000 n
|
||||
0000012646 00000 n
|
||||
0000012738 00000 n
|
||||
0000000015 00000 n
|
||||
0000000071 00000 n
|
||||
0000000917 00000 n
|
||||
0000001037 00000 n
|
||||
0000001111 00000 n
|
||||
0000013100 00000 n
|
||||
0000012872 00000 n
|
||||
0000001246 00000 n
|
||||
0000013163 00000 n
|
||||
0000012935 00000 n
|
||||
0000001383 00000 n
|
||||
0000013229 00000 n
|
||||
0000013001 00000 n
|
||||
0000001520 00000 n
|
||||
0000013295 00000 n
|
||||
0000013067 00000 n
|
||||
0000001657 00000 n
|
||||
0000013361 00000 n
|
||||
0000013133 00000 n
|
||||
0000001794 00000 n
|
||||
0000013427 00000 n
|
||||
0000013199 00000 n
|
||||
0000001931 00000 n
|
||||
0000013491 00000 n
|
||||
0000013263 00000 n
|
||||
0000002068 00000 n
|
||||
0000013557 00000 n
|
||||
0000013329 00000 n
|
||||
0000002205 00000 n
|
||||
0000004808 00000 n
|
||||
0000004916 00000 n
|
||||
0000007867 00000 n
|
||||
0000007975 00000 n
|
||||
0000009848 00000 n
|
||||
0000013621 00000 n
|
||||
0000009956 00000 n
|
||||
0000010129 00000 n
|
||||
0000010498 00000 n
|
||||
0000010791 00000 n
|
||||
0000011090 00000 n
|
||||
0000011336 00000 n
|
||||
0000011588 00000 n
|
||||
0000011889 00000 n
|
||||
0000012133 00000 n
|
||||
0000012246 00000 n
|
||||
0000012356 00000 n
|
||||
0000012464 00000 n
|
||||
0000012570 00000 n
|
||||
0000012686 00000 n
|
||||
0000007639 00000 n
|
||||
0000007747 00000 n
|
||||
0000009620 00000 n
|
||||
0000013393 00000 n
|
||||
0000009728 00000 n
|
||||
0000009901 00000 n
|
||||
0000010270 00000 n
|
||||
0000010563 00000 n
|
||||
0000010862 00000 n
|
||||
0000011108 00000 n
|
||||
0000011360 00000 n
|
||||
0000011661 00000 n
|
||||
0000011905 00000 n
|
||||
0000012018 00000 n
|
||||
0000012128 00000 n
|
||||
0000012236 00000 n
|
||||
0000012342 00000 n
|
||||
0000012458 00000 n
|
||||
trailer
|
||||
<<
|
||||
/Size 45
|
||||
|
@ -385,5 +385,5 @@ trailer
|
|||
/Info 4 0 R
|
||||
>>
|
||||
startxref
|
||||
13672
|
||||
13444
|
||||
%%EOF
|
||||
|
|
|
@ -38,16 +38,16 @@ Bring it up in <code>vi</code> or your editor of choice and let's take a look at
|
|||
<section id="IndexFiles"><title>IndexFiles</title>
|
||||
|
||||
<p>
|
||||
As we discussed in the previous walk-through, the <code><a
|
||||
href="api/core/org/apache/lucene/demo/IndexFiles.html">IndexFiles</a></code> class creates a Lucene
|
||||
As we discussed in the previous walk-through, the <a
|
||||
href="api/demo/org/apache/lucene/demo/IndexFiles.html">IndexFiles</a> class creates a Lucene
|
||||
Index. Let's take a look at how it does this.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The first substantial thing the <code>main</code> function does is instantiate <code><a
|
||||
href="api/core/org/apache/lucene/index/IndexWriter.html">IndexWriter</a></code>. It passes the string
|
||||
"<code>index</code>" and a new instance of a class called <code><a
|
||||
href="api/core/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a></code>.
|
||||
The first substantial thing the <code>main</code> function does is instantiate <a
|
||||
href="api/core/org/apache/lucene/index/IndexWriter.html">IndexWriter</a>. It passes the string
|
||||
"<code>index</code>" and a new instance of a class called <a
|
||||
href="api/core/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a>.
|
||||
The "<code>index</code>" string is the name of the filesystem directory where all index information
|
||||
should be stored. Because we're not passing a full path, this will be created as a subdirectory of
|
||||
the current working directory (if it does not already exist). On some platforms, it may be created
|
||||
|
@ -55,19 +55,19 @@ in other directories (such as the user's home directory).
|
|||
</p>
|
||||
|
||||
<p>
|
||||
The <code><a href="api/core/org/apache/lucene/index/IndexWriter.html">IndexWriter</a></code> is the main
|
||||
The <a href="api/core/org/apache/lucene/index/IndexWriter.html">IndexWriter</a> is the main
|
||||
class responsible for creating indices. To use it you must instantiate it with a path that it can
|
||||
write the index into. If this path does not exist it will first create it. Otherwise it will
|
||||
refresh the index at that path. You can also create an index using one of the subclasses of <code><a
|
||||
href="api/core/org/apache/lucene/store/Directory.html">Directory</a></code>. In any case, you must also pass an
|
||||
instance of <code><a
|
||||
href="api/core/org/apache/lucene/analysis/Analyzer.html">org.apache.lucene.analysis.Analyzer</a></code>.
|
||||
refresh the index at that path. You can also create an index using one of the subclasses of <a
|
||||
href="api/core/org/apache/lucene/store/Directory.html">Directory</a>. In any case, you must also pass an
|
||||
instance of <a
|
||||
href="api/core/org/apache/lucene/analysis/Analyzer.html">org.apache.lucene.analysis.Analyzer</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The particular <code><a href="api/core/org/apache/lucene/analysis/Analyzer.html">Analyzer</a></code> we
|
||||
are using, <code><a
|
||||
href="api/core/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a></code>, is
|
||||
The particular <a href="api/core/org/apache/lucene/analysis/Analyzer.html">Analyzer</a> we
|
||||
are using, <a
|
||||
href="api/core/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a>, is
|
||||
little more than a standard Java Tokenizer, converting all strings to lowercase and filtering out
|
||||
stop words and characters from the index. By stop words and characters I mean common language
|
||||
words such as articles (a, an, the, etc.) and other strings that may have less value for searching
|
||||
|
@ -79,21 +79,21 @@ href="http://svn.apache.org/repos/asf/lucene/java/trunk/contrib/analyzers/common
|
|||
|
||||
<p>
|
||||
Looking further down in the file, you should see the <code>indexDocs()</code> code. This recursive
|
||||
function simply crawls the directories and uses <code><a
|
||||
href="api/core/org/apache/lucene/demo/FileDocument.html">FileDocument</a></code> to create <code><a
|
||||
href="api/core/org/apache/lucene/document/Document.html">Document</a></code> objects. The <code><a
|
||||
href="api/core/org/apache/lucene/document/Document.html">Document</a></code> is simply a data object to
|
||||
function simply crawls the directories and uses <a
|
||||
href="api/demo/org/apache/lucene/demo/FileDocument.html">FileDocument</a> to create <a
|
||||
href="api/core/org/apache/lucene/document/Document.html">Document</a> objects. The <a
|
||||
href="api/core/org/apache/lucene/document/Document.html">Document</a> is simply a data object to
|
||||
represent the content in the file as well as its creation time and location. These instances are
|
||||
added to the <code>indexWriter</code>. Take a look inside <code><a
|
||||
href="api/core/org/apache/lucene/demo/FileDocument.html">FileDocument</a></code>. It's not particularly
|
||||
complicated. It just adds fields to the <code><a
|
||||
href="api/core/org/apache/lucene/document/Document.html">Document</a></code>.
|
||||
added to the <code>indexWriter</code>. Take a look inside <a
|
||||
href="api/demo/org/apache/lucene/demo/FileDocument.html">FileDocument</a>. It's not particularly
|
||||
complicated. It just adds fields to the <a
|
||||
href="api/core/org/apache/lucene/document/Document.html">Document</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
As you can see there isn't much to creating an index. The devil is in the details. You may also
|
||||
wish to examine the other samples in this directory, particularly the <code><a
|
||||
href="api/core/org/apache/lucene/demo/IndexHTML.html">IndexHTML</a></code> class. It is a bit more
|
||||
wish to examine the other samples in this directory, particularly the <a
|
||||
href="api/demo/org/apache/lucene/demo/IndexHTML.html">IndexHTML</a> class. It is a bit more
|
||||
complex but builds upon this example.
|
||||
</p>
|
||||
|
||||
|
@ -102,29 +102,29 @@ complex but builds upon this example.
|
|||
<section id="Searching Files"><title>Searching Files</title>
|
||||
|
||||
<p>
|
||||
The <code><a href="api/core/org/apache/lucene/demo/SearchFiles.html">SearchFiles</a></code> class is
|
||||
quite simple. It primarily collaborates with an <code><a
|
||||
href="api/core/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a></code>, <code><a
|
||||
href="api/core/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a></code>
|
||||
(which is used in the <code><a
|
||||
href="api/core/org/apache/lucene/demo/IndexFiles.html">IndexFiles</a></code> class as well) and a
|
||||
<code><a href="api/core/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a></code>. The
|
||||
The <a href="api/demo/org/apache/lucene/demo/SearchFiles.html">SearchFiles</a> class is
|
||||
quite simple. It primarily collaborates with an <a
|
||||
href="api/core/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a>, <a
|
||||
href="api/core/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a>
|
||||
(which is used in the <a
|
||||
href="api/core/org/apache/lucene/demo/IndexFiles.html">IndexFiles</a> class as well) and a
|
||||
<a href="api/core/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a>. The
|
||||
query parser is constructed with an analyzer used to interpret your query text in the same way the
|
||||
documents are interpreted: finding the end of words and removing useless words like 'a', 'an' and
|
||||
'the'. The <code><a href="api/core/org/apache/lucene/search/Query.html">Query</a></code> object contains
|
||||
the results from the <code><a
|
||||
href="api/core/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a></code> which is passed to
|
||||
the searcher. Note that it's also possible to programmatically construct a rich <code><a
|
||||
href="api/core/org/apache/lucene/search/Query.html">Query</a></code> object without using the query
|
||||
'the'. The <a href="api/core/org/apache/lucene/search/Query.html">Query</a> object contains
|
||||
the results from the <a
|
||||
href="api/core/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a> which is passed to
|
||||
the searcher. Note that it's also possible to programmatically construct a rich <a
|
||||
href="api/core/org/apache/lucene/search/Query.html">Query</a> object without using the query
|
||||
parser. The query parser just enables decoding the <a href="queryparsersyntax.html">Lucene query
|
||||
syntax</a> into the corresponding <code><a
|
||||
href="api/core/org/apache/lucene/search/Query.html">Query</a></code> object. Search can be executed in
|
||||
syntax</a> into the corresponding <a
|
||||
href="api/core/org/apache/lucene/search/Query.html">Query</a> object. Search can be executed in
|
||||
two different ways:
|
||||
<ul>
|
||||
<li>Streaming: A <code><a href="api/core/org/apache/lucene/search/HitCollector.html">HitCollector</a></code> subclass
|
||||
<li>Streaming: A <a href="api/core/org/apache/lucene/search/Collector.html">Collector</a> subclass
|
||||
simply prints out the document ID and score for each matching document.</li>
|
||||
<li>Paging: Using a <code><a href="api/core/org/apache/lucene/search/TopDocCollector.html">TopDocCollector</a></code>
|
||||
the search results are printed in pages, sorted by score (i. e. relevance).</li>
|
||||
<li>Paging: Using a <a href="api/core/org/apache/lucene/search/TopScoreDocCollector.html">TopScoreDocCollector</a>
|
||||
the search results are printed in pages, sorted by score (i. e. relevance).</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
|
|
|
@ -62,8 +62,8 @@ the jars included in the <code>WEB-INF/lib</code> directory in the <code>lucenew
|
|||
</p>
|
||||
<p>
|
||||
You'll notice that this file includes the same header and footer as <code>index.jsp</code>. From
|
||||
there it constructs an <code><a
|
||||
href="api/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a></code> with the
|
||||
there it constructs an <a
|
||||
href="api/core/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a> with the
|
||||
<code>indexLocation</code> that was specified in <code>configuration.jsp</code>. If there is an
|
||||
error of any kind in opening the index, it is displayed to the user and the boolean flag
|
||||
<code>error</code> is set to tell the rest of the sections of the jsp not to continue.
|
||||
|
@ -76,38 +76,38 @@ default value. If the criteria isn't provided then a servlet error is thrown (i
|
|||
this is the result of url tampering or some form of browser malfunction).
|
||||
</p>
|
||||
<p>
|
||||
The jsp moves on to construct a <code><a
|
||||
href="api/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a></code> to
|
||||
analyze the search text. This matches the analyzer used during indexing (<code><a
|
||||
href="api/org/apache/lucene/demo/IndexHTML.html">IndexHTML</a></code>), which is generally
|
||||
recommended. This is passed to the <code><a
|
||||
href="api/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a></code> along with the
|
||||
criteria to construct a <code><a href="api/org/apache/lucene/search/Query.html">Query</a></code>
|
||||
The jsp moves on to construct a <a
|
||||
href="api/core/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a> to
|
||||
analyze the search text. This matches the analyzer used during indexing (<a
|
||||
href="api/demo/org/apache/lucene/demo/IndexHTML.html">IndexHTML</a>), which is generally
|
||||
recommended. This is passed to the <a
|
||||
href="api/core/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a> along with the
|
||||
criteria to construct a <a href="api/core/org/apache/lucene/search/Query.html">Query</a>
|
||||
object. You'll also notice the string literal <code>"contents"</code> included. This specifies
|
||||
that the search should cover the <code>contents</code> field and not the <code>title</code>,
|
||||
<code>url</code> or some other field in the indexed documents. If there is any error in
|
||||
constructing a <code><a href="api/org/apache/lucene/search/Query.html">Query</a></code> object an
|
||||
constructing a <a href="api/org/apache/lucene/search/Query.html">Query</a> object an
|
||||
error is displayed to the user.
|
||||
</p>
|
||||
<p>
|
||||
In the next section of the jsp the <code><a
|
||||
href="api/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a></code> is asked to search
|
||||
In the next section of the jsp the <a
|
||||
href="api/core/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a> is asked to search
|
||||
given the query object. The results are returned in a collection called <code>hits</code>. If the
|
||||
length property of the <code>hits</code> collection is 0 (meaning there were no results) then an
|
||||
error is displayed to the user and the error flag is set.
|
||||
</p>
|
||||
<p>
|
||||
Finally the jsp iterates through the <code>hits</code> collection, taking the current page into
|
||||
account, and displays properties of the <code><a
|
||||
href="api/org/apache/lucene/document/Document.html">Document</a></code> objects we talked about in
|
||||
account, and displays properties of the <a
|
||||
href="api/core/org/apache/lucene/document/Document.html">Document</a> objects we talked about in
|
||||
the first walkthrough. These objects contain "known" fields specific to their indexer (in this case
|
||||
<code><a href="api/org/apache/lucene/demo/IndexHTML.html">IndexHTML</a></code> constructs a document
|
||||
<a href="api/demo/org/apache/lucene/demo/IndexHTML.html">IndexHTML</a> constructs a document
|
||||
with "url", "title" and "contents").
|
||||
</p>
|
||||
<p>
|
||||
Please note that in a real deployment of Lucene, it's best to instantiate <code><a
|
||||
href="api/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a></code> and <code><a
|
||||
href="api/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a></code> once, and then
|
||||
Please note that in a real deployment of Lucene, it's best to instantiate <a
|
||||
href="api/core/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a> and <a
|
||||
href="api/core/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a> once, and then
|
||||
share them across search requests, instead of re-instantiating per search request.
|
||||
</p>
|
||||
</section>
|
||||
|
@ -115,9 +115,9 @@ share them across search requests, instead of re-instantiating per search reques
|
|||
<section id="More sources (developers)"><title>More sources (developers)</title>
|
||||
<p>
|
||||
There are additional sources used by the web app that were not specifically covered by either
|
||||
walkthrough. For example the HTML parser, the <code><a
|
||||
href="api/org/apache/lucene/demo/IndexHTML.html">IndexHTML</a></code> class and <code><a
|
||||
href="api/org/apache/lucene/demo/HTMLDocument.html">HTMLDocument</a></code> class. These are very
|
||||
walkthrough. For example the HTML parser, the <a
|
||||
href="api/demo/org/apache/lucene/demo/IndexHTML.html">IndexHTML</a> class and <a
|
||||
href="api/demo/org/apache/lucene/demo/HTMLDocument.html">HTMLDocument</a> class. These are very
|
||||
similar to the classes covered in the first example, with properties specific to parsing and
|
||||
indexing HTML. This is beyond our scope; however, by now you should feel like you're "getting
|
||||
started" with Lucene.
|
||||
|
|
Loading…
Reference in New Issue