Re: Using SOLR Autocomplete for addresses (i.e. multiple terms)
Thanks Jan, this is perfect! I'm going to work on implementing it this week and let you know how it works for us. Thanks again! Dave On Wed, Jan 25, 2012 at 1:10 PM, Jan Høydahl jan@cominvent.com wrote: Hi, I don't think that the suggester can output multiple fields. You would have to encode your data in a special way with separators. Using the separate Solr core approach, you may return whatever fields you choose to the suggest Ajax component. I've written up a blog post and uploaded an example to GitHub. See http://www.cominvent.com/2012/01/25/super-flexible-autocomplete-with-solr/ -- Jan Høydahl, search solution architect Cominvent AS - www.cominvent.com Solr Training - www.solrtraining.com On 3. jan. 2012, at 20:41, Dave wrote: I've got another question for anyone that might have some insight - how do you get all of your indexed information along with the suggestions? i.e. if each suggestion has an ID# associated with it, do I have to then query for that ID#, or is there some way or specifying a field list in the URL to the suggester? Thanks! Dave On Tue, Jan 3, 2012 at 9:41 AM, Dave dla...@gmail.com wrote: Hi Jan, Yes, I just saw the answer. I've implemented that, and it's working as expected. I do have Suggest running on its own core, separate from my standard search handler. I think, however, that the custom QueryConverter that was linked to is now too restrictive. For example, it works perfectly when someone enters brooklyn, n, but if they start by entering ny or new york it doesn't return anything. I think what you're talking about, suggesting from whole input and individual tokens is the way to go. Is there anything you can point me to as a starting point? I think I've got the basic setup, but I'm not quite comfortable enough with SOLR and the SOLR architecture yet (honestly I've only been using it for about 2 weeks now). Thanks for the help! Dave On Tue, Jan 3, 2012 at 8:24 AM, Jan Høydahl jan@cominvent.com wrote: Hi, As you see, you've got an answer at StackOverflow already with a proposed solution to implement your own QueryConverter. Another way is to create a Solr core solely for Suggest, and tune it exactly the way you like. Then you can have it suggest from the whole input as well as individual tokens and weigh these as you choose, as well as implement phonetic normalization and other useful tricks. -- Jan Høydahl, search solution architect Cominvent AS - www.cominvent.com Solr Training - www.solrtraining.com On 3. jan. 2012, at 00:52, Dave wrote: Hi, I'm reposting my StackOverflow question to this thread as I'm not getting much of a response there. Thank you for any assistance you can provide! http://stackoverflow.com/questions/8705600/using-solr-autocomplete-for-addresses I'm new to SOLR, but I've got it up and running, indexing data via the DIH, and properly returning results for queries. I'm trying to setup another core to run suggester, in order to autocomplete geographical locations. We have a web application that needs to take a city, state / region, country input. We'd like to do this in a single entry box. Here are some examples: Brooklyn, New York, United States of America Philadelphia, Pennsylvania, United States of America Barcelona, Catalunya, Spain Assume for now that every location around the world can be split into this 3-form input. I've setup my DIH to create a TemplateTransformer field that combines the 4 tables (city, state and country are all independent tables connected to each other by a master places table) into a field called fullplacename: field column=fullplacename template=${city_join.plainname}, ${region_join.plainname}, ${country_join.plainname}/ I've defined a text_auto field in schema.xml: fieldType class=solr.TextField name=text_auto analyzer tokenizer class=solr.KeywordTokenizerFactory/ filter class=solr.LowerCaseFilterFactory/ /analyzer /fieldType and have defined these two fields as well: field name=name_autocomplete type=text_auto indexed=true stored=true multiValued=true / copyField source=fullplacename dest=name_autocomplete / Now, here's my problem. This works fine for the first term, i.e. if I type brooklyn I get the results I'd expect, using this URL to query: http://localhost:8983/solr/places/suggest?q=brooklyn However, as soon as I put a comma and/or a space in there, it breaks them up into 2 suggestions, and I get a suggestion for each: http://localhost:8983/solr/places/suggest?q=brooklyn%2C%20ny Gives me a suggestion for brooklyn and a suggestion for ny instead of a suggestion that matches brooklyn, ny. I've tried every solution I can find via google and haven't had any luck. Is there something simple that I've missed, or is this the wrong approach?
Re: Using SOLR Autocomplete for addresses (i.e. multiple terms)
Jan Høydahl / Cominvent wrote Hi, As you see, you've got an answer at StackOverflow already with a proposed solution to implement your own QueryConverter. Another way is to create a Solr core solely for Suggest, and tune it exactly the way you like. Then you can have it suggest from the whole input as well as individual tokens and weigh these as you choose, as well as implement phonetic normalization and other useful tricks. -- Jan Høydahl, search solution architect Cominvent AS - www.cominvent.com Solr Training - www.solrtraining.com On 3. jan. 2012, at 00:52, Dave wrote: Jan, Awesome autosuggester. Very flexible and something I have been looking for, for a long time. Thanx for sharing this gem! Tip: to enable phonetic searching, change phonetic field in qf to textphon. Or add phonetic as a copyfield. -- View this message in context: http://lucene.472066.n3.nabble.com/Using-SOLR-Autocomplete-for-addresses-i-e-multiple-terms-tp3627856p3698254.html Sent from the Solr - User mailing list archive at Nabble.com.
Re: Using SOLR Autocomplete for addresses (i.e. multiple terms)
Hi, I don't think that the suggester can output multiple fields. You would have to encode your data in a special way with separators. Using the separate Solr core approach, you may return whatever fields you choose to the suggest Ajax component. I've written up a blog post and uploaded an example to GitHub. See http://www.cominvent.com/2012/01/25/super-flexible-autocomplete-with-solr/ -- Jan Høydahl, search solution architect Cominvent AS - www.cominvent.com Solr Training - www.solrtraining.com On 3. jan. 2012, at 20:41, Dave wrote: I've got another question for anyone that might have some insight - how do you get all of your indexed information along with the suggestions? i.e. if each suggestion has an ID# associated with it, do I have to then query for that ID#, or is there some way or specifying a field list in the URL to the suggester? Thanks! Dave On Tue, Jan 3, 2012 at 9:41 AM, Dave dla...@gmail.com wrote: Hi Jan, Yes, I just saw the answer. I've implemented that, and it's working as expected. I do have Suggest running on its own core, separate from my standard search handler. I think, however, that the custom QueryConverter that was linked to is now too restrictive. For example, it works perfectly when someone enters brooklyn, n, but if they start by entering ny or new york it doesn't return anything. I think what you're talking about, suggesting from whole input and individual tokens is the way to go. Is there anything you can point me to as a starting point? I think I've got the basic setup, but I'm not quite comfortable enough with SOLR and the SOLR architecture yet (honestly I've only been using it for about 2 weeks now). Thanks for the help! Dave On Tue, Jan 3, 2012 at 8:24 AM, Jan Høydahl jan@cominvent.com wrote: Hi, As you see, you've got an answer at StackOverflow already with a proposed solution to implement your own QueryConverter. Another way is to create a Solr core solely for Suggest, and tune it exactly the way you like. Then you can have it suggest from the whole input as well as individual tokens and weigh these as you choose, as well as implement phonetic normalization and other useful tricks. -- Jan Høydahl, search solution architect Cominvent AS - www.cominvent.com Solr Training - www.solrtraining.com On 3. jan. 2012, at 00:52, Dave wrote: Hi, I'm reposting my StackOverflow question to this thread as I'm not getting much of a response there. Thank you for any assistance you can provide! http://stackoverflow.com/questions/8705600/using-solr-autocomplete-for-addresses I'm new to SOLR, but I've got it up and running, indexing data via the DIH, and properly returning results for queries. I'm trying to setup another core to run suggester, in order to autocomplete geographical locations. We have a web application that needs to take a city, state / region, country input. We'd like to do this in a single entry box. Here are some examples: Brooklyn, New York, United States of America Philadelphia, Pennsylvania, United States of America Barcelona, Catalunya, Spain Assume for now that every location around the world can be split into this 3-form input. I've setup my DIH to create a TemplateTransformer field that combines the 4 tables (city, state and country are all independent tables connected to each other by a master places table) into a field called fullplacename: field column=fullplacename template=${city_join.plainname}, ${region_join.plainname}, ${country_join.plainname}/ I've defined a text_auto field in schema.xml: fieldType class=solr.TextField name=text_auto analyzer tokenizer class=solr.KeywordTokenizerFactory/ filter class=solr.LowerCaseFilterFactory/ /analyzer /fieldType and have defined these two fields as well: field name=name_autocomplete type=text_auto indexed=true stored=true multiValued=true / copyField source=fullplacename dest=name_autocomplete / Now, here's my problem. This works fine for the first term, i.e. if I type brooklyn I get the results I'd expect, using this URL to query: http://localhost:8983/solr/places/suggest?q=brooklyn However, as soon as I put a comma and/or a space in there, it breaks them up into 2 suggestions, and I get a suggestion for each: http://localhost:8983/solr/places/suggest?q=brooklyn%2C%20ny Gives me a suggestion for brooklyn and a suggestion for ny instead of a suggestion that matches brooklyn, ny. I've tried every solution I can find via google and haven't had any luck. Is there something simple that I've missed, or is this the wrong approach? Just in case, here's the searchComponent and requestHandler definition: requestHandler name=/suggest class=org.apache.solr.handler.component.SearchHandler lst name=defaults str name=spellchecktrue/str str name=spellcheck.dictionarysuggest/str str name=spellcheck.count10/str /lst arr
Re: Using SOLR Autocomplete for addresses (i.e. multiple terms)
Hi, As you see, you've got an answer at StackOverflow already with a proposed solution to implement your own QueryConverter. Another way is to create a Solr core solely for Suggest, and tune it exactly the way you like. Then you can have it suggest from the whole input as well as individual tokens and weigh these as you choose, as well as implement phonetic normalization and other useful tricks. -- Jan Høydahl, search solution architect Cominvent AS - www.cominvent.com Solr Training - www.solrtraining.com On 3. jan. 2012, at 00:52, Dave wrote: Hi, I'm reposting my StackOverflow question to this thread as I'm not getting much of a response there. Thank you for any assistance you can provide! http://stackoverflow.com/questions/8705600/using-solr-autocomplete-for-addresses I'm new to SOLR, but I've got it up and running, indexing data via the DIH, and properly returning results for queries. I'm trying to setup another core to run suggester, in order to autocomplete geographical locations. We have a web application that needs to take a city, state / region, country input. We'd like to do this in a single entry box. Here are some examples: Brooklyn, New York, United States of America Philadelphia, Pennsylvania, United States of America Barcelona, Catalunya, Spain Assume for now that every location around the world can be split into this 3-form input. I've setup my DIH to create a TemplateTransformer field that combines the 4 tables (city, state and country are all independent tables connected to each other by a master places table) into a field called fullplacename: field column=fullplacename template=${city_join.plainname}, ${region_join.plainname}, ${country_join.plainname}/ I've defined a text_auto field in schema.xml: fieldType class=solr.TextField name=text_auto analyzer tokenizer class=solr.KeywordTokenizerFactory/ filter class=solr.LowerCaseFilterFactory/ /analyzer /fieldType and have defined these two fields as well: field name=name_autocomplete type=text_auto indexed=true stored=true multiValued=true / copyField source=fullplacename dest=name_autocomplete / Now, here's my problem. This works fine for the first term, i.e. if I type brooklyn I get the results I'd expect, using this URL to query: http://localhost:8983/solr/places/suggest?q=brooklyn However, as soon as I put a comma and/or a space in there, it breaks them up into 2 suggestions, and I get a suggestion for each: http://localhost:8983/solr/places/suggest?q=brooklyn%2C%20ny Gives me a suggestion for brooklyn and a suggestion for ny instead of a suggestion that matches brooklyn, ny. I've tried every solution I can find via google and haven't had any luck. Is there something simple that I've missed, or is this the wrong approach? Just in case, here's the searchComponent and requestHandler definition: requestHandler name=/suggest class=org.apache.solr.handler.component.SearchHandler lst name=defaults str name=spellchecktrue/str str name=spellcheck.dictionarysuggest/str str name=spellcheck.count10/str /lst arr name=components strsuggest/str /arr /requestHandler searchComponent name=suggest class=solr.SpellCheckComponent lst name=spellchecker str name=namesuggest/str str name=classnameorg.apache.solr.spelling.suggest.Suggester/str str name=lookupImplorg.apache.solr.spelling.suggest.tst.TSTLookup/str str name=fieldname_autocomplete/str`br/ /lst /searchComponent Thanks for any assistance!
Re: Using SOLR Autocomplete for addresses (i.e. multiple terms)
Hi Jan, Yes, I just saw the answer. I've implemented that, and it's working as expected. I do have Suggest running on its own core, separate from my standard search handler. I think, however, that the custom QueryConverter that was linked to is now too restrictive. For example, it works perfectly when someone enters brooklyn, n, but if they start by entering ny or new york it doesn't return anything. I think what you're talking about, suggesting from whole input and individual tokens is the way to go. Is there anything you can point me to as a starting point? I think I've got the basic setup, but I'm not quite comfortable enough with SOLR and the SOLR architecture yet (honestly I've only been using it for about 2 weeks now). Thanks for the help! Dave On Tue, Jan 3, 2012 at 8:24 AM, Jan Høydahl jan@cominvent.com wrote: Hi, As you see, you've got an answer at StackOverflow already with a proposed solution to implement your own QueryConverter. Another way is to create a Solr core solely for Suggest, and tune it exactly the way you like. Then you can have it suggest from the whole input as well as individual tokens and weigh these as you choose, as well as implement phonetic normalization and other useful tricks. -- Jan Høydahl, search solution architect Cominvent AS - www.cominvent.com Solr Training - www.solrtraining.com On 3. jan. 2012, at 00:52, Dave wrote: Hi, I'm reposting my StackOverflow question to this thread as I'm not getting much of a response there. Thank you for any assistance you can provide! http://stackoverflow.com/questions/8705600/using-solr-autocomplete-for-addresses I'm new to SOLR, but I've got it up and running, indexing data via the DIH, and properly returning results for queries. I'm trying to setup another core to run suggester, in order to autocomplete geographical locations. We have a web application that needs to take a city, state / region, country input. We'd like to do this in a single entry box. Here are some examples: Brooklyn, New York, United States of America Philadelphia, Pennsylvania, United States of America Barcelona, Catalunya, Spain Assume for now that every location around the world can be split into this 3-form input. I've setup my DIH to create a TemplateTransformer field that combines the 4 tables (city, state and country are all independent tables connected to each other by a master places table) into a field called fullplacename: field column=fullplacename template=${city_join.plainname}, ${region_join.plainname}, ${country_join.plainname}/ I've defined a text_auto field in schema.xml: fieldType class=solr.TextField name=text_auto analyzer tokenizer class=solr.KeywordTokenizerFactory/ filter class=solr.LowerCaseFilterFactory/ /analyzer /fieldType and have defined these two fields as well: field name=name_autocomplete type=text_auto indexed=true stored=true multiValued=true / copyField source=fullplacename dest=name_autocomplete / Now, here's my problem. This works fine for the first term, i.e. if I type brooklyn I get the results I'd expect, using this URL to query: http://localhost:8983/solr/places/suggest?q=brooklyn However, as soon as I put a comma and/or a space in there, it breaks them up into 2 suggestions, and I get a suggestion for each: http://localhost:8983/solr/places/suggest?q=brooklyn%2C%20ny Gives me a suggestion for brooklyn and a suggestion for ny instead of a suggestion that matches brooklyn, ny. I've tried every solution I can find via google and haven't had any luck. Is there something simple that I've missed, or is this the wrong approach? Just in case, here's the searchComponent and requestHandler definition: requestHandler name=/suggest class=org.apache.solr.handler.component.SearchHandler lst name=defaults str name=spellchecktrue/str str name=spellcheck.dictionarysuggest/str str name=spellcheck.count10/str /lst arr name=components strsuggest/str /arr /requestHandler searchComponent name=suggest class=solr.SpellCheckComponent lst name=spellchecker str name=namesuggest/str str name=classnameorg.apache.solr.spelling.suggest.Suggester/str str name=lookupImplorg.apache.solr.spelling.suggest.tst.TSTLookup/str str name=fieldname_autocomplete/str`br/ /lst /searchComponent Thanks for any assistance!
Re: Using SOLR Autocomplete for addresses (i.e. multiple terms)
I've got another question for anyone that might have some insight - how do you get all of your indexed information along with the suggestions? i.e. if each suggestion has an ID# associated with it, do I have to then query for that ID#, or is there some way or specifying a field list in the URL to the suggester? Thanks! Dave On Tue, Jan 3, 2012 at 9:41 AM, Dave dla...@gmail.com wrote: Hi Jan, Yes, I just saw the answer. I've implemented that, and it's working as expected. I do have Suggest running on its own core, separate from my standard search handler. I think, however, that the custom QueryConverter that was linked to is now too restrictive. For example, it works perfectly when someone enters brooklyn, n, but if they start by entering ny or new york it doesn't return anything. I think what you're talking about, suggesting from whole input and individual tokens is the way to go. Is there anything you can point me to as a starting point? I think I've got the basic setup, but I'm not quite comfortable enough with SOLR and the SOLR architecture yet (honestly I've only been using it for about 2 weeks now). Thanks for the help! Dave On Tue, Jan 3, 2012 at 8:24 AM, Jan Høydahl jan@cominvent.com wrote: Hi, As you see, you've got an answer at StackOverflow already with a proposed solution to implement your own QueryConverter. Another way is to create a Solr core solely for Suggest, and tune it exactly the way you like. Then you can have it suggest from the whole input as well as individual tokens and weigh these as you choose, as well as implement phonetic normalization and other useful tricks. -- Jan Høydahl, search solution architect Cominvent AS - www.cominvent.com Solr Training - www.solrtraining.com On 3. jan. 2012, at 00:52, Dave wrote: Hi, I'm reposting my StackOverflow question to this thread as I'm not getting much of a response there. Thank you for any assistance you can provide! http://stackoverflow.com/questions/8705600/using-solr-autocomplete-for-addresses I'm new to SOLR, but I've got it up and running, indexing data via the DIH, and properly returning results for queries. I'm trying to setup another core to run suggester, in order to autocomplete geographical locations. We have a web application that needs to take a city, state / region, country input. We'd like to do this in a single entry box. Here are some examples: Brooklyn, New York, United States of America Philadelphia, Pennsylvania, United States of America Barcelona, Catalunya, Spain Assume for now that every location around the world can be split into this 3-form input. I've setup my DIH to create a TemplateTransformer field that combines the 4 tables (city, state and country are all independent tables connected to each other by a master places table) into a field called fullplacename: field column=fullplacename template=${city_join.plainname}, ${region_join.plainname}, ${country_join.plainname}/ I've defined a text_auto field in schema.xml: fieldType class=solr.TextField name=text_auto analyzer tokenizer class=solr.KeywordTokenizerFactory/ filter class=solr.LowerCaseFilterFactory/ /analyzer /fieldType and have defined these two fields as well: field name=name_autocomplete type=text_auto indexed=true stored=true multiValued=true / copyField source=fullplacename dest=name_autocomplete / Now, here's my problem. This works fine for the first term, i.e. if I type brooklyn I get the results I'd expect, using this URL to query: http://localhost:8983/solr/places/suggest?q=brooklyn However, as soon as I put a comma and/or a space in there, it breaks them up into 2 suggestions, and I get a suggestion for each: http://localhost:8983/solr/places/suggest?q=brooklyn%2C%20ny Gives me a suggestion for brooklyn and a suggestion for ny instead of a suggestion that matches brooklyn, ny. I've tried every solution I can find via google and haven't had any luck. Is there something simple that I've missed, or is this the wrong approach? Just in case, here's the searchComponent and requestHandler definition: requestHandler name=/suggest class=org.apache.solr.handler.component.SearchHandler lst name=defaults str name=spellchecktrue/str str name=spellcheck.dictionarysuggest/str str name=spellcheck.count10/str /lst arr name=components strsuggest/str /arr /requestHandler searchComponent name=suggest class=solr.SpellCheckComponent lst name=spellchecker str name=namesuggest/str str name=classnameorg.apache.solr.spelling.suggest.Suggester/str str name=lookupImplorg.apache.solr.spelling.suggest.tst.TSTLookup/str str name=fieldname_autocomplete/str`br/ /lst /searchComponent Thanks for any assistance!