can anybody update me if its possible that a word within a phrase is match, that phrase can be displayed.
darniz darniz wrote: > > Thanks for your input > You made a valid point, if we are using field type as text to get > autocomplete it wont work because it goes through tokenizer. > Hence looks like for my use case i need to have a field which uses ngram > and copy. Here is what i did > > i created a filed as same as the lucid blog says. > > <field name="autocomp" type="edgytext" indexed="true" stored="true" > omitNorms="true" omitTermFreqAndPositions="true"/> > > with the following field configurtion > > <fieldType name="edgytext" class="solr.TextField" > positionIncrementGap="100"> > − > <analyzer type="index"> > <tokenizer class="solr.KeywordTokenizerFactory"/> > <filter class="solr.LowerCaseFilterFactory"/> > <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" > maxGramSize="25"/> > </analyzer> > − > <analyzer type="query"> > <tokenizer class="solr.KeywordTokenizerFactory"/> > <filter class="solr.LowerCaseFilterFactory"/> > </analyzer> > </fieldType> > > Now when i query i get the correct phrases for example if search for > autocomp:"how to" i get all the correct phrases like > > How to find a car > How to find a mechanic > How to choose the right insurance company > > etc... which is good. > > Now I have two question. > 1) Is it necessary to give the query in quote. My gut feeling is yes, > since if you dont give quote i get phrases beginning with How followed by > some other words like How can etc... > > 2)if i search for word for example choose, it gives me nothing > I was expecting to see a result considering there is a word "choose" in > the phrase > How to choose the right insurance company > > i might look more at documentation but do you have anything to advice. > > darniz > > > > > > > > > > Shalin Shekhar Mangar wrote: >> >> On Tue, Nov 24, 2009 at 10:12 AM, darniz <rnizamud...@edmunds.com> wrote: >> >>> >>> hello all >>> Let me first explain the task i am trying to do. >>> i have article with title for example >>> <doc> >>> <str name="title">>Car Insurance for Teenage Drivers</str> >>> </doc> >>> − >>> <doc> >>> <str name="title">A Total Loss? </str> >>> </doc> >>> If a user begins to type car insu i want the autopop to show up with the >>> entire phrase. >>> There are two ways to implement this. >>> First is to use the termcomponent and the other is to use a field with >>> field >>> type which uses solr.EdgeNGramFilterFactor filter. >>> >>> I started with using with Term component and i declared a term request >>> handler and gave the following query >>> >>> http://localhost:8080/solr/terms?terms.fl=title&terms.prefix=car >>> The issue is that its not giving the entire pharse, it gives me back >>> results >>> like car, caravan, carbon. Now i know using terms.prefix will only give >>> me >>> results where the sentence start with car. On top of this i also want if >>> there is word like car somewhere in between the title that should also >>> show >>> up in autopop very much similar like google where a word is not >>> necessarily >>> start at the beginning but it could be present anywhere in the middle of >>> the >>> title. >>> The question is does TermComponent is a good candidate or using a >>> custom >>> field lets the name is autoPopupText with field type configured with all >>> filter and EdgeNGramFilterFactor defined and copying the title to the >>> autoPopupText field and using it to power autopopup. >>> >>> The other thing is that using EdgeNGramFilterFactor is more from index >>> point of view when you index document you need to know which fields you >>> want >>> to copy to autoPopupText field where as using Term component is more >>> like >>> you can define at query time what fields you want to use to fetch >>> autocomplete from. >>> >>> Any idea whats the best and why the Term component is not giving me an >>> entire phrase which i mentioned earlier. >>> FYI >>> my title field is of type text. >>> >> >> >> You are using a tokenized field type with TermsComponent therefore each >> word >> in your phrase gets indexed as a separate token. You should use a >> non-tokenized type (such as a string type) with TermsComponent. However, >> this will only let you search by prefix and not by words in between the >> phrase. >> >> Your best bet here would be to use EdgeNGramFilterFactory. If your index >> is >> very large, you can consider doing a prefix search on shingles too. >> >> -- >> Regards, >> Shalin Shekhar Mangar. >> >> > > -- View this message in context: http://old.nabble.com/Implementing-phrase-autopop-up-tp26490419p26506470.html Sent from the Solr - User mailing list archive at Nabble.com.