Scott, I’m fairly new to suggesters having just recently built my first one. 
But where my configuration differs from yours is on this line:

<str name="suggestAnalyzerFieldType">string</str>

I used the field type name that I had defined instead like:

<str name="suggestAnalyzerFieldType"> textSuggest </str>

I’m not certain that would help, but I can’t see where your config is much 
different form mine elsewhere.
What version of Solr are you running?


On 8/25/16, 6:41 PM, "Scott Vanderbilt" <li...@datagenic.com> wrote:

    I'm having the exact same problem the O.P. describes from his email back 
    in May, but my configuration dose not have the same defect his had. So I 
    am at a loss to understand why my suggest queries are returning no results.
    
    Here is my config:
    
    Relevant bits from schema.xml:
    --------------------------------------
    <field name="roadName" type="string" indexed="true" stored="true" 
    multiValued="true"/>
    <field name="commentaryP" type="text_general" indexed="true" 
    stored="true" multiValued="true"/>
    ...
    <field name="text_suggest" type="textSuggest" indexed="true" 
    stored="true" multiValued="true" />
    ...
    <copyField source="roadName" dest="text_suggest" />
    <copyField source="commentaryP" dest="text_suggest" />
    ...
    <fieldType class="solr.TextField" name="textSuggest" 
    positionIncrementGap="100">
        <analyzer>
           <tokenizer class="solr.StandardTokenizerFactory"/>
           <filter class="solr.StandardFilterFactory"/>
           <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
    </fieldType>
    
    Relevant bits from solrconfig.xml:
    --------------------------------------
    <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
       <lst name="defaults">
         <str name="suggest.dictionary">mySuggester</str>
         <str name="suggest">true</str>
         <str name="suggest.count">10</str>
       </lst>
       <arr name="components">
         <str>suggest</str>
       </arr>
    </requestHandler>
    ...
    <searchComponent name="suggest" class="solr.SuggestComponent">
       <lst name="suggester">
         <str name="name">mySuggester</str>
         <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
         <str name="indexPath">suggester_infix_dir</str>
         <str name="dictionaryImpl">DocumentDictionaryFactory</str>
         <str name="field">text_suggest</str>
         <str name="suggestAnalyzerFieldType">string</str>
         <str name="buildOnStartup">false</str>
         <str name="buildOnCommit">false</str>
       </lst>
    </searchComponent>
    
    I build the dictionary like this:
    
       http://example.com:8983/solr/rrib/suggest?suggest.build=true
    
    and get back this response:
    
        <response>
           <lst name="responseHeader">
              <int name="status">0</int>
              <int name="QTime">964</int>
           </lst>
           <str name="command">build</str>
        </response>
    
    I then attempt a query like this:
    
        http://example.com:8983/solr/rrib/suggest?q=re
    
    and get back this response:
    
        <response>
           <lst name="responseHeader">
              <int name="status">0</int>
              <int name="QTime">37</int>
           </lst>
           <lst name="suggest">
              <lst name="mySuggester">
                 <lst name="re">
                    <int name="numFound">0</int>
                    <arr name="suggestions"/>
                 </lst>
              </lst>
           </lst>
        </response>
    
    In Solr's Admin interface, I see the following under OTHER->suggest on 
    Plugins/Stats page:
    
        class:suggest
        description:Suggester component
        src:
        version:6.1.0
        stats:
            mySuggester:   SolrSuggester [ name=mySuggester,
            sourceLocation=null, storeDir=,
            lookupImpl=AnalyzingInfixLookupFactory,
            dictionaryImpl=DocumentDictionaryFactory, sizeInBytes=6795 ]
            totalSizeInBytes:   6795
    
    The value of 6,795 bytes seems pretty small to me for a repository of 
    403 XML files containing about 1.5 MB of mark-up. Perhaps that is a clue 
    that the dictionary has not been fully populated, which probably 
    explains the empty result sets, but I cannot figure out why
    
    Any assistance would be gratefully received.
    
    Thank you.
    
    On 5/6/2016 9:42 AM, Erick Erickson wrote:
    > First off, kudos for providing the details, that really helps!
    >
    > The root of your problem is that your suggest field has stored="false".
    > DocumentDictionaryFactory reads through all the
    > docs in your corpus, extracts the stored data and puts it in the FST. 
Since
    > you don't have any stored data your FST is...er...minimal.
    >
    > I'd also add
    > <str name="storeDir">suggester_fuzzy_dir</str>
    > to the searchComponent. You'll find the FST on disk in that directory 
where it
    > can be read next time Solr starts up. It is also helpful for figuring out
    > whether there are suggestions to be had.
    >
    > And a minor nit, you probably don't want to specify suggest.dictionary
    > in your query,
    > that's already specified in your config.
    >
    > And it looks like you're alive to the fact that with that setup
    > capitalization matters
    > as does the fact that these suggestions be matched from the beginning of 
the
    > field...
    >
    > Best,
    > Erick
    >
    > On Thu, May 5, 2016 at 1:05 AM, Grigoris Iliopoulos
    > <grigoris....@gmail.com> wrote:
    >> Hi there,
    >>
    >> I want to use the Solr suggester component for city names. I have the
    >> following settings:
    >> schema.xml
    >>
    >> Field definition
    >>
    >> <fieldType class="solr.TextField" name="textSuggest" 
positionIncrementGap="100">
    >>   <analyzer>
    >>     <tokenizer class="solr.StandardTokenizerFactory"/>
    >>     <filter class="solr.StandardFilterFactory"/>
    >>     <filter class="solr.LowerCaseFilterFactory"/>
    >>   </analyzer>
    >> </fieldType>
    >>
    >> The field i want to apply the suggester on
    >>
    >> <field name="city" type="string"  indexed="true" stored="false"/>
    >>
    >> The copy field
    >>
    >> <copyField source="city" dest="citySuggest"/>
    >>
    >> The field
    >>
    >> <field name="citySuggest" type="textSuggest" stored="false" 
indexed="true" />
    >>
    >> solr-config.xml
    >>
    >> <requestHandler name="/suggest" class="solr.SearchHandler" 
startup="lazy">
    >>   <lst name="defaults">
    >>     <str name="suggest">true</str>
    >>     <str name="suggest.count">10</str>
    >>     <str name="suggest.dictionary">mySuggester</str>
    >>   </lst>
    >>   <arr name="components">
    >>     <str>suggest</str>
    >>   </arr>
    >> </requestHandler>
    >>
    >>
    >>
    >> <searchComponent name="suggest" class="solr.SuggestComponent">
    >>   <lst name="suggester">
    >>     <str name="name">mySuggester</str>
    >>     <str name="lookupImpl">FuzzyLookupFactory</str>
    >>     <str name="dictionaryImpl">DocumentDictionaryFactory</str>
    >>     <str name="field">citySuggest</str>
    >>     <str name="suggestAnalyzerFieldType">string</str>
    >>   </lst>
    >> </searchComponent>
    >>
    >> Then i run
    >>
    >> 
http://localhost:8983/solr/company/suggest?suggest=true&suggest.dictionary=mySuggester&wt=json&suggest.q=Ath&suggest.build=true
    >>
    >> to build the suggest component
    >>
    >> Finally i run
    >>
    >>    
http://localhost:8983/solr/company/suggest?suggest=true&suggest.dictionary=mySuggester&wt=json&suggest.q=Ath
    >>
    >> but i get an empty result set
    >>
    >> 
{"responseHeader":{"status":0,"QTime":0},"suggest":{"mySuggester":{"Ath":{"numFound":0,"suggestions":[]}}}}
    >>
    >> Are there any obvious mistakes? Any thoughts?
    >
    
    

Reply via email to