Error with Solr Suggester using lookupIml = FreeTextLookupFactory

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Error with Solr Suggester using lookupIml = FreeTextLookupFactory

Tyrone Tse
Solr version 8.1.1

My schema

<field name="suggest" type="text_en_splitting" stored="true"
multiValued="false" indexed="true"/>
<copyField source="name" dest="suggest" maxChars="256"/>

solconfig.xml

    <searchComponent name="suggest" class="solr.SuggestComponent">
        <lst name="suggester">
            <str name="name">mySuggester</str>
            <str name="lookupImpl">FreeTextLookupFactory</str>
            <str name="dictionaryImpl">DocumentDictionaryFactory</str>
            <str name="field">suggest</str>
            <str name="ngrams">3</str>
            <str name="separator"> </str>
            <str
name="suggestFreeTextAnalyzerFieldType">text_en_splitting</str>
            <str name="buildOnStartup">false</str>
        </lst>
    </searchComponent>

    <requestHandler name="/suggest" class="solr.SearchHandler"
                    startup="lazy" >
        <lst name="defaults">
            <str name="suggest">true</str>
            <str name="suggest.count">10</str>
        </lst>
        <arr name="components">
            <str>suggest</str>
        </arr>
    </requestHandler>

The suggest query
http://localhost:8983/solr/catalog/suggest?suggest=true&suggest.dictionary=mySuggester&suggest.q=gin

works on Red Hat Enterprise Linux 7.6

it returns

{
  "responseHeader":{
    "status":0,
    "QTime":0},
  "suggest":{"mySuggester":{
      "gin":{
        "numFound":10,
        "suggestions":[{
            "term":"gin",
            "weight":13613207305387128,
            "payload":""},
          {
            "term":"ginjo",
            "weight":3986422076966947,
            "payload":""},
...

But when I  on my Mac with OS High Sierra
Generates the error

"Lookup not supported at this time"

"java.lang.IllegalStateException: Lookup not supported at this time\n\tat
org.apache.lucene.search.suggest.analyzing.FreeTextSuggester.lookup(FreeTextSuggester.java:428)\n\tat
org.apache.lucene.search.suggest.analyzing.FreeTextSuggester.lookup(FreeTextSuggester.java:399)\n\tat
org.apache.lucene.search.suggest.analyzing.FreeTextSuggester.lookup(FreeTextSuggester.java:388)\n\tat
org.apache.solr.spelling.suggest.SolrSuggester.getSuggestions(SolrSuggester.java:243)\n\tat
org.apache.solr.handler.component.SuggestComponent.process(SuggestComponent.java:264)\n\tat
org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)\n\tat
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)\n\tat
org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)\n\tat
org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)\n\tat
org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)\n\tat
Reply | Threaded
Open this post in threaded view
|

Re: Error with Solr Suggester using lookupIml = FreeTextLookupFactory

Mikhail Khludnev-2
Hello,

Have you build suggester before requesting?

On Wed, Nov 6, 2019 at 12:50 PM Tyrone Tse <[hidden email]> wrote:

> Solr version 8.1.1
>
> My schema
>
> <field name="suggest" type="text_en_splitting" stored="true"
> multiValued="false" indexed="true"/>
> <copyField source="name" dest="suggest" maxChars="256"/>
>
> solconfig.xml
>
>     <searchComponent name="suggest" class="solr.SuggestComponent">
>         <lst name="suggester">
>             <str name="name">mySuggester</str>
>             <str name="lookupImpl">FreeTextLookupFactory</str>
>             <str name="dictionaryImpl">DocumentDictionaryFactory</str>
>             <str name="field">suggest</str>
>             <str name="ngrams">3</str>
>             <str name="separator"> </str>
>             <str
> name="suggestFreeTextAnalyzerFieldType">text_en_splitting</str>
>             <str name="buildOnStartup">false</str>
>         </lst>
>     </searchComponent>
>
>     <requestHandler name="/suggest" class="solr.SearchHandler"
>                     startup="lazy" >
>         <lst name="defaults">
>             <str name="suggest">true</str>
>             <str name="suggest.count">10</str>
>         </lst>
>         <arr name="components">
>             <str>suggest</str>
>         </arr>
>     </requestHandler>
>
> The suggest query
>
> http://localhost:8983/solr/catalog/suggest?suggest=true&suggest.dictionary=mySuggester&suggest.q=gin
>
> works on Red Hat Enterprise Linux 7.6
>
> it returns
>
> {
>   "responseHeader":{
>     "status":0,
>     "QTime":0},
>   "suggest":{"mySuggester":{
>       "gin":{
>         "numFound":10,
>         "suggestions":[{
>             "term":"gin",
>             "weight":13613207305387128,
>             "payload":""},
>           {
>             "term":"ginjo",
>             "weight":3986422076966947,
>             "payload":""},
> ...
>
> But when I  on my Mac with OS High Sierra
> Generates the error
>
> "Lookup not supported at this time"
>
> "java.lang.IllegalStateException: Lookup not supported at this time\n\tat
>
> org.apache.lucene.search.suggest.analyzing.FreeTextSuggester.lookup(FreeTextSuggester.java:428)\n\tat
>
> org.apache.lucene.search.suggest.analyzing.FreeTextSuggester.lookup(FreeTextSuggester.java:399)\n\tat
>
> org.apache.lucene.search.suggest.analyzing.FreeTextSuggester.lookup(FreeTextSuggester.java:388)\n\tat
>
> org.apache.solr.spelling.suggest.SolrSuggester.getSuggestions(SolrSuggester.java:243)\n\tat
>
> org.apache.solr.handler.component.SuggestComponent.process(SuggestComponent.java:264)\n\tat
>
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)\n\tat
>
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)\n\tat
> org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)\n\tat
> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)\n\tat
> org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)\n\tat
>


--
Sincerely yours
Mikhail Khludnev
Reply | Threaded
Open this post in threaded view
|

Re: Error with Solr Suggester using lookupIml = FreeTextLookupFactory

Tyrone Tse
What's the command to build it


On Wed, Nov 6, 2019 at 3:06 PM Mikhail Khludnev <[hidden email]> wrote:

> Hello,
>
> Have you build suggester before requesting?
>
> On Wed, Nov 6, 2019 at 12:50 PM Tyrone Tse <[hidden email]> wrote:
>
> > Solr version 8.1.1
> >
> > My schema
> >
> > <field name="suggest" type="text_en_splitting" stored="true"
> > multiValued="false" indexed="true"/>
> > <copyField source="name" dest="suggest" maxChars="256"/>
> >
> > solconfig.xml
> >
> >     <searchComponent name="suggest" class="solr.SuggestComponent">
> >         <lst name="suggester">
> >             <str name="name">mySuggester</str>
> >             <str name="lookupImpl">FreeTextLookupFactory</str>
> >             <str name="dictionaryImpl">DocumentDictionaryFactory</str>
> >             <str name="field">suggest</str>
> >             <str name="ngrams">3</str>
> >             <str name="separator"> </str>
> >             <str
> > name="suggestFreeTextAnalyzerFieldType">text_en_splitting</str>
> >             <str name="buildOnStartup">false</str>
> >         </lst>
> >     </searchComponent>
> >
> >     <requestHandler name="/suggest" class="solr.SearchHandler"
> >                     startup="lazy" >
> >         <lst name="defaults">
> >             <str name="suggest">true</str>
> >             <str name="suggest.count">10</str>
> >         </lst>
> >         <arr name="components">
> >             <str>suggest</str>
> >         </arr>
> >     </requestHandler>
> >
> > The suggest query
> >
> >
> http://localhost:8983/solr/catalog/suggest?suggest=true&suggest.dictionary=mySuggester&suggest.q=gin
> >
> > works on Red Hat Enterprise Linux 7.6
> >
> > it returns
> >
> > {
> >   "responseHeader":{
> >     "status":0,
> >     "QTime":0},
> >   "suggest":{"mySuggester":{
> >       "gin":{
> >         "numFound":10,
> >         "suggestions":[{
> >             "term":"gin",
> >             "weight":13613207305387128,
> >             "payload":""},
> >           {
> >             "term":"ginjo",
> >             "weight":3986422076966947,
> >             "payload":""},
> > ...
> >
> > But when I  on my Mac with OS High Sierra
> > Generates the error
> >
> > "Lookup not supported at this time"
> >
> > "java.lang.IllegalStateException: Lookup not supported at this time\n\tat
> >
> >
> org.apache.lucene.search.suggest.analyzing.FreeTextSuggester.lookup(FreeTextSuggester.java:428)\n\tat
> >
> >
> org.apache.lucene.search.suggest.analyzing.FreeTextSuggester.lookup(FreeTextSuggester.java:399)\n\tat
> >
> >
> org.apache.lucene.search.suggest.analyzing.FreeTextSuggester.lookup(FreeTextSuggester.java:388)\n\tat
> >
> >
> org.apache.solr.spelling.suggest.SolrSuggester.getSuggestions(SolrSuggester.java:243)\n\tat
> >
> >
> org.apache.solr.handler.component.SuggestComponent.process(SuggestComponent.java:264)\n\tat
> >
> >
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)\n\tat
> >
> >
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)\n\tat
> > org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)\n\tat
> > org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)\n\tat
> > org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)\n\tat
> >
>
>
> --
> Sincerely yours
> Mikhail Khludnev
>
Reply | Threaded
Open this post in threaded view
|

Re: Error with Solr Suggester using lookupIml = FreeTextLookupFactory

Tyrone Tse
It's working now that I changed the solrconfig.xml to

    <searchComponent name="suggest" class="solr.SuggestComponent">
        <lst name="suggester">
            <str name="name">mySuggester</str>
            <str name="lookupImpl">FreeTextLookupFactory</str>
            <str name="dictionaryImpl">DocumentDictionaryFactory</str>
            <str name="field">suggest</str>
            <str name="ngrams">3</str>
            <str name="separator"> </str>
            <str
name="suggestFreeTextAnalyzerFieldType">text_en_splitting</str>
            *<str name="buildOnStartup">true</str>*
        </lst>
    </searchComponent>

On Wed, Nov 6, 2019 at 3:11 PM Tyrone Tse <[hidden email]> wrote:

> What's the command to build it
>
>
> On Wed, Nov 6, 2019 at 3:06 PM Mikhail Khludnev <[hidden email]> wrote:
>
>> Hello,
>>
>> Have you build suggester before requesting?
>>
>> On Wed, Nov 6, 2019 at 12:50 PM Tyrone Tse <[hidden email]> wrote:
>>
>> > Solr version 8.1.1
>> >
>> > My schema
>> >
>> > <field name="suggest" type="text_en_splitting" stored="true"
>> > multiValued="false" indexed="true"/>
>> > <copyField source="name" dest="suggest" maxChars="256"/>
>> >
>> > solconfig.xml
>> >
>> >     <searchComponent name="suggest" class="solr.SuggestComponent">
>> >         <lst name="suggester">
>> >             <str name="name">mySuggester</str>
>> >             <str name="lookupImpl">FreeTextLookupFactory</str>
>> >             <str name="dictionaryImpl">DocumentDictionaryFactory</str>
>> >             <str name="field">suggest</str>
>> >             <str name="ngrams">3</str>
>> >             <str name="separator"> </str>
>> >             <str
>> > name="suggestFreeTextAnalyzerFieldType">text_en_splitting</str>
>> >             <str name="buildOnStartup">false</str>
>> >         </lst>
>> >     </searchComponent>
>> >
>> >     <requestHandler name="/suggest" class="solr.SearchHandler"
>> >                     startup="lazy" >
>> >         <lst name="defaults">
>> >             <str name="suggest">true</str>
>> >             <str name="suggest.count">10</str>
>> >         </lst>
>> >         <arr name="components">
>> >             <str>suggest</str>
>> >         </arr>
>> >     </requestHandler>
>> >
>> > The suggest query
>> >
>> >
>> http://localhost:8983/solr/catalog/suggest?suggest=true&suggest.dictionary=mySuggester&suggest.q=gin
>> >
>> > works on Red Hat Enterprise Linux 7.6
>> >
>> > it returns
>> >
>> > {
>> >   "responseHeader":{
>> >     "status":0,
>> >     "QTime":0},
>> >   "suggest":{"mySuggester":{
>> >       "gin":{
>> >         "numFound":10,
>> >         "suggestions":[{
>> >             "term":"gin",
>> >             "weight":13613207305387128,
>> >             "payload":""},
>> >           {
>> >             "term":"ginjo",
>> >             "weight":3986422076966947,
>> >             "payload":""},
>> > ...
>> >
>> > But when I  on my Mac with OS High Sierra
>> > Generates the error
>> >
>> > "Lookup not supported at this time"
>> >
>> > "java.lang.IllegalStateException: Lookup not supported at this
>> time\n\tat
>> >
>> >
>> org.apache.lucene.search.suggest.analyzing.FreeTextSuggester.lookup(FreeTextSuggester.java:428)\n\tat
>> >
>> >
>> org.apache.lucene.search.suggest.analyzing.FreeTextSuggester.lookup(FreeTextSuggester.java:399)\n\tat
>> >
>> >
>> org.apache.lucene.search.suggest.analyzing.FreeTextSuggester.lookup(FreeTextSuggester.java:388)\n\tat
>> >
>> >
>> org.apache.solr.spelling.suggest.SolrSuggester.getSuggestions(SolrSuggester.java:243)\n\tat
>> >
>> >
>> org.apache.solr.handler.component.SuggestComponent.process(SuggestComponent.java:264)\n\tat
>> >
>> >
>> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)\n\tat
>> >
>> >
>> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)\n\tat
>> > org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)\n\tat
>> >
>> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)\n\tat
>> > org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)\n\tat
>> >
>>
>>
>> --
>> Sincerely yours
>> Mikhail Khludnev
>>
>
Reply | Threaded
Open this post in threaded view
|

Re: Error with Solr Suggester using lookupIml = FreeTextLookupFactory

Erick Erickson
This setting is pretty dangerous. It’ll build the suggester every time the Solr instance starts. The DocumentDictionaryFactory will read _every_ document in your index to extract the stored “suggest” field and create the dictionary.

But this points to the fact that you hadn’t built the dictionary when you originally posted the problem, you can do this by issuing a command (curl it in, or on the browser line) like:

blahblahblahblah/solr/collection/suggest?suggest.build=true&suggest=true

Best,
Erick

> On Nov 6, 2019, at 4:32 PM, Tyrone Tse <[hidden email]> wrote:
>
> It's working now that I changed the solrconfig.xml to
>
>    <searchComponent name="suggest" class="solr.SuggestComponent">
>        <lst name="suggester">
>            <str name="name">mySuggester</str>
>            <str name="lookupImpl">FreeTextLookupFactory</str>
>            <str name="dictionaryImpl">DocumentDictionaryFactory</str>
>            <str name="field">suggest</str>
>            <str name="ngrams">3</str>
>            <str name="separator"> </str>
>            <str
> name="suggestFreeTextAnalyzerFieldType">text_en_splitting</str>
>            *<str name="buildOnStartup">true</str>*
>        </lst>
>    </searchComponent>
>
> On Wed, Nov 6, 2019 at 3:11 PM Tyrone Tse <[hidden email]> wrote:
>
>> What's the command to build it
>>
>>
>> On Wed, Nov 6, 2019 at 3:06 PM Mikhail Khludnev <[hidden email]> wrote:
>>
>>> Hello,
>>>
>>> Have you build suggester before requesting?
>>>
>>> On Wed, Nov 6, 2019 at 12:50 PM Tyrone Tse <[hidden email]> wrote:
>>>
>>>> Solr version 8.1.1
>>>>
>>>> My schema
>>>>
>>>> <field name="suggest" type="text_en_splitting" stored="true"
>>>> multiValued="false" indexed="true"/>
>>>> <copyField source="name" dest="suggest" maxChars="256"/>
>>>>
>>>> solconfig.xml
>>>>
>>>>    <searchComponent name="suggest" class="solr.SuggestComponent">
>>>>        <lst name="suggester">
>>>>            <str name="name">mySuggester</str>
>>>>            <str name="lookupImpl">FreeTextLookupFactory</str>
>>>>            <str name="dictionaryImpl">DocumentDictionaryFactory</str>
>>>>            <str name="field">suggest</str>
>>>>            <str name="ngrams">3</str>
>>>>            <str name="separator"> </str>
>>>>            <str
>>>> name="suggestFreeTextAnalyzerFieldType">text_en_splitting</str>
>>>>            <str name="buildOnStartup">false</str>
>>>>        </lst>
>>>>    </searchComponent>
>>>>
>>>>    <requestHandler name="/suggest" class="solr.SearchHandler"
>>>>                    startup="lazy" >
>>>>        <lst name="defaults">
>>>>            <str name="suggest">true</str>
>>>>            <str name="suggest.count">10</str>
>>>>        </lst>
>>>>        <arr name="components">
>>>>            <str>suggest</str>
>>>>        </arr>
>>>>    </requestHandler>
>>>>
>>>> The suggest query
>>>>
>>>>
>>> http://localhost:8983/solr/catalog/suggest?suggest=true&suggest.dictionary=mySuggester&suggest.q=gin
>>>>
>>>> works on Red Hat Enterprise Linux 7.6
>>>>
>>>> it returns
>>>>
>>>> {
>>>>  "responseHeader":{
>>>>    "status":0,
>>>>    "QTime":0},
>>>>  "suggest":{"mySuggester":{
>>>>      "gin":{
>>>>        "numFound":10,
>>>>        "suggestions":[{
>>>>            "term":"gin",
>>>>            "weight":13613207305387128,
>>>>            "payload":""},
>>>>          {
>>>>            "term":"ginjo",
>>>>            "weight":3986422076966947,
>>>>            "payload":""},
>>>> ...
>>>>
>>>> But when I  on my Mac with OS High Sierra
>>>> Generates the error
>>>>
>>>> "Lookup not supported at this time"
>>>>
>>>> "java.lang.IllegalStateException: Lookup not supported at this
>>> time\n\tat
>>>>
>>>>
>>> org.apache.lucene.search.suggest.analyzing.FreeTextSuggester.lookup(FreeTextSuggester.java:428)\n\tat
>>>>
>>>>
>>> org.apache.lucene.search.suggest.analyzing.FreeTextSuggester.lookup(FreeTextSuggester.java:399)\n\tat
>>>>
>>>>
>>> org.apache.lucene.search.suggest.analyzing.FreeTextSuggester.lookup(FreeTextSuggester.java:388)\n\tat
>>>>
>>>>
>>> org.apache.solr.spelling.suggest.SolrSuggester.getSuggestions(SolrSuggester.java:243)\n\tat
>>>>
>>>>
>>> org.apache.solr.handler.component.SuggestComponent.process(SuggestComponent.java:264)\n\tat
>>>>
>>>>
>>> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)\n\tat
>>>>
>>>>
>>> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)\n\tat
>>>> org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)\n\tat
>>>>
>>> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)\n\tat
>>>> org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)\n\tat
>>>>
>>>
>>>
>>> --
>>> Sincerely yours
>>> Mikhail Khludnev
>>>
>>