We have the same needs in our music search, and we found this is not a good approach for performance reason .
Did any one have experience of implement the autosuggestion in a heavy product environment ? Any suggestions ? 2009/11/26 Anshum <ansh...@gmail.com>: > Try this, > Change the code as required: > --------- > > > import java.io.IOException; > > import org.apache.lucene.index.CorruptIndexException; > import org.apache.lucene.index.IndexReader; > import org.apache.lucene.index.Term; > import org.apache.lucene.index.TermEnum; > > /** > * @author anshum > * > */ > public class GetTermsToSuggest { > > private static void getTerms(String inputText) { > IndexReader reader = null; > try { > reader = IndexReader.open("/home/anshum/index/testindex"); > String field = "fieldname"; > field = field.intern(); > TermEnum tenum = reader.terms(new Term("fieldname", "")); > Boolean hasRun = false; > try { > do { > final Term term = tenum.term(); > if (term == null || term.field() != field) > break; > final String termText = term.text(); > if (termText.startsWith(inputText)) { > System.out.println(termText); > hasRun = true; > } else if (hasRun == true) > break; > } while (tenum.next()); > tenum.close(); > } catch (IOException e) { > e.printStackTrace(); > } > } catch (CorruptIndexException e2) { > e2.printStackTrace(); > } catch (IOException e2) { > e2.printStackTrace(); > } > > } > > /** > * @param args > */ > public static void main(String[] args) { > GetTermsToSuggest.getTerms(args[0]); > } > } > > > -- > Anshum Gupta > Naukri Labs! > http://ai-cafe.blogspot.com > > The facts expressed here belong to everybody, the opinions to me. The > distinction is yours to draw............ > > > On Thu, Nov 26, 2009 at 3:19 PM, Uwe Schindler <u...@thetaphi.de> wrote: > >> You can fix this if you just create the initial term not with "", instead >> with your prefix: >> TermEnum tenum = reader.terms(new Term(field,prefix)); >> >> And inside the while loop just break out, >> >> if (!termText.startsWith(prefix)) break; >> >> ----- >> Uwe Schindler >> H.-H.-Meier-Allee 63, D-28213 Bremen >> http://www.thetaphi.de >> eMail: u...@thetaphi.de >> >> >> > -----Original Message----- >> > From: DHIVYA M [mailto:dhivyakrishna...@yahoo.com] >> > Sent: Thursday, November 26, 2009 10:39 AM >> > To: java-user@lucene.apache.org >> > Subject: RE: Need help regarding implementation of autosuggest using >> > jquery >> > >> > Sir, >> > >> > Your suggestion was fantastic. >> > >> > I tried the below mentioned code but it is showing me the entire result >> of >> > indexed words starting from the letter that i give as input. >> > Ex: >> > if i give "fo" >> > am getting all the indexes from the word starting with fo upto words >> > starting with z. >> > i.e. it starts displaying from the word matching the search word and ends >> > up with the last word available in the index file. >> > >> > Kindly suggest me a solution for this problem >> > >> > Thanks in advance, >> > Dhivya >> > >> > --- On Wed, 25/11/09, Uwe Schindler <u...@thetaphi.de> wrote: >> > >> > >> > From: Uwe Schindler <u...@thetaphi.de> >> > Subject: RE: Need help regarding implementation of autosuggest using >> > jquery >> > To: java-user@lucene.apache.org >> > Date: Wednesday, 25 November, 2009, 9:54 AM >> > >> > >> > Hi Dhivya, >> > >> > you can iterate all terms in the index using a TermEnum, that can be >> > retrieved using IndexReader.terms(Term startTerm). >> > >> > If you are interested in all terms from a specific field, position the >> > TermEnum on the first possible term in this field ("") and iterate until >> > the >> > field name changes. As terms in the TermEnum are first ordered by field >> > name >> > then by term text (in UTF-16 order), the loop would look like this: >> > >> > IndexReader reader = ... >> > String field = .... >> > Field = field.intern(); // important for the while loop >> > TermEnum tenum = reader.terms(new Term(field,"")); >> > try { >> > do { >> > final Term term = tenum.term(); >> > if (term==null || term.field()!=field) break; >> > final String termText = term.text(); >> > // do something with the termText >> > } while (tenum.next()); >> > } finally { >> > tenum.close(); >> > } >> > >> > >> > ----- >> > Uwe Schindler >> > H.-H.-Meier-Allee 63, D-28213 Bremen >> > http://www.thetaphi.de >> > eMail: u...@thetaphi.de >> > >> > >> > > -----Original Message----- >> > > From: DHIVYA M [mailto:dhivyakrishna...@yahoo.com] >> > > Sent: Wednesday, November 25, 2009 8:06 AM >> > > To: java user >> > > Subject: Need help regarding implementation of autosuggest using jquery >> > > >> > > Hi all, >> > > >> > > Am using lucene 2.3.2 as a search engine in my e-paper site. So that i >> > > want the user to search the news. I achieved that objective but now am >> > > trying to implement autosuggest so that user can pick a choice from the >> > > drop down and no need of typing in the entire sentence or so. >> > > >> > > I have download Jquery for this purpose and am trying to implement it. >> > > The collections of data to refer for the suggestion is given in an >> > > arraylist or jus with in a string. >> > > >> > > But for my application, i need to populate the suggestions with the >> > > indexed words available in the index file created during indexing >> > > operation. >> > > >> > > Can anyone give an idea to read the contents from the index file and >> > make >> > > it available as suggestions? or anyother idea to achieve this >> objective? >> > > >> > > Thanks in advance, >> > > Dhivya >> > > >> > > >> > > The INTERNET now has a personality. YOURS! See your Yahoo! >> > Homepage. >> > > http://in.yahoo.com/ >> > >> > >> > --------------------------------------------------------------------- >> > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org >> > For additional commands, e-mail: java-user-h...@lucene.apache.org >> > >> > >> > >> > >> > The INTERNET now has a personality. YOURS! See your Yahoo! >> Homepage. >> > http://in.yahoo.com/ >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org >> For additional commands, e-mail: java-user-h...@lucene.apache.org >> >> > -- 梦的开始挣扎于城市的边缘 心的远方执着在脚步的瞬间 我的宿命埋藏了寂寞的永远 --------------------------------------------------------------------- To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org For additional commands, e-mail: java-user-h...@lucene.apache.org