You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Bala Iyer <gr...@yahoo.com> on 2014/02/27 16:00:34 UTC

Solr 4.7 Autocomplete

Hi,

I am new to solr, Is it possible to accomplish autocomplete through ( Terms or Suggest or Facet ) over a date range.

I need to have a autocomplete over a field between a  date range from another field.

Thanks

newbie

Re: Solr 4.7 Autocomplete

Posted by Ahmet Arslan <io...@yahoo.com>.
Hi,

http://localhost:8983/solr/collection1/select?facet=true&fq=timestamp:[2013-01-01T00:00:00Z%20TO%202013-12-02T00:00:00Z]&facet.prefix=google


You url misses these parameters : q=*:* facet.field=content_autosuggest

And if you are getting numFound=0 because of your filter query, we cannot generate any suggestion. Try relaxing your filter query first.

Ahmet

On Friday, February 28, 2014 12:04 AM, Bala Iyer <gr...@yahoo.com> wrote:

Thanks for the quick response,

I have configured suggest and its working great but its searching all the documents. 

From my field definition: 
I need to search between specific timestamp and  by username fields for autocomplete by field content/content_autosuggest.

I need to autocomplete word  "google" between 2013-01-01T00:00:00Z and 2013-12-31T23:59:59Z for username "John"  when i type "goo" 

IS IT POSSIBLE?

==================
Schema.xml

<fieldType class="solr.TextField" name="text_auto">
    <analyzer type="index"> 
        <tokenizer class="solr.StandardTokenizerFactory"/> 
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.ShingleFilterFactory" maxShingleSize="4" outputUnigrams="true" outputUnigramsIfNoShingles="false" />
    </analyzer> 
    <analyzer type="query"> 
        <tokenizer class="solr.StandardTokenizerFactory"/> 
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/> 
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
    </analyzer>
    </fieldType>


   <field name="username" type="string" indexed="true" stored="true" multiValued="true" omitNorms="true" termVectors="true" />
   <field name="timestamp" type="date" indexed="true" stored="true" multiValued="true" omitNorms="true" termVectors="true" /> 
   <field name="content_autosuggest" type="text_auto" indexed="true" stored="true" multiValued="true"/>
   <copyField source="content" dest="content_autosuggest"/>
   <copyField source="id" dest="content_autosuggest"/>
   <copyField source="username" dest="content_autosuggest"/>
   <copyField source="timestamp" dest="content_autosuggest"/>

solrconfig.xml
<searchComponent class="solr.SpellCheckComponent" name="suggest">
<lst name="spellchecker">
<str name="name">suggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
<str name="field">content_autosuggest</str> <!-- the indexed field to derive suggestions from -->
<str name="buildOnCommit">true</str>
</lst>
<str name="queryAnalyzerFieldType">text_auto</str>
</searchComponent>

<requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggest">
<lst name="defaults">
<str name="df">content_autosuggest</str>
<str name="spellcheck">true</str>
<str name="spellcheck.dictionary">suggest</str>
<str name="spellcheck.onlyMorePopular">true</str>
<str name="spellcheck.count">25</str>
<str name="spellcheck.collate">true</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
=============

i tried 

http://localhost:8983/solr/collection1/select?facet=true&fq=timestamp:[2013-01-01T00:00:00Z%20TO%202013-12-02T00:00:00Z]&facet.prefix=google


No result 
"<result name="response" numFound="0" start="0"/>"


BUT 


http://localhost:8983/solr/collection1/select?q=google 

i get
"<result name="response" numFound="4918" start="0">"
<doc>
<str name="id">103154</str>
<arr name="content_autosuggest">
<str>103154</str>
<str>John</str>
<str>2013-09-10T08:02:28Z</str>
<str>Google Chrome</str>
</arr>
<arr name="username">
<str>John</str>
</arr>
<arr name="timestamp">
<date>2013-09-10T08:02:28Z</date>
</arr>
<arr name="content">
<str>Google Chrome</str>
</arr>
<long name="_version_">1461215424741900288</long>
</doc>

Thanks 




On Thursday, February 27, 2014 1:08 PM, Ahmet Arslan <io...@yahoo.com> wrote:

Hi,

What do you mean by 'date range' ? Faceting component respects q or fq parameters, so if you set fq=date:[somedate TO otherdate] yes faceting values will change. facet.prefix can be used for auto complete.




On Thursday, February 27, 2014 5:03 PM, Bala Iyer <gr...@yahoo.com> wrote:
Hi,

I am new to solr, Is it possible to accomplish autocomplete through ( Terms or Suggest or Facet ) over a date range.

I need to have a autocomplete over a field between a  date range from another field.

Thanks

newbie

Re: Solr 4.7 Autocomplete

Posted by Bala Iyer <gr...@yahoo.com>.
Thanks for the quick response,

I have configured suggest and its working great but its searching all the documents. 

From my field definition: 
I need to search between specific timestamp and  by username fields for autocomplete by field content/content_autosuggest.

I need to autocomplete word  "google" between 2013-01-01T00:00:00Z and 2013-12-31T23:59:59Z for username "John"  when i type "goo" 

IS IT POSSIBLE?

==================
Schema.xml

<fieldType class="solr.TextField" name="text_auto">
    <analyzer type="index"> 
        <tokenizer class="solr.StandardTokenizerFactory"/> 
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.ShingleFilterFactory" maxShingleSize="4" outputUnigrams="true" outputUnigramsIfNoShingles="false" />
    </analyzer> 
    <analyzer type="query"> 
        <tokenizer class="solr.StandardTokenizerFactory"/> 
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/> 
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
    </analyzer>
    </fieldType>


   <field name="username" type="string" indexed="true" stored="true" multiValued="true" omitNorms="true" termVectors="true" />
   <field name="timestamp" type="date" indexed="true" stored="true" multiValued="true" omitNorms="true" termVectors="true" /> 
   <field name="content_autosuggest" type="text_auto" indexed="true" stored="true" multiValued="true"/>
   <copyField source="content" dest="content_autosuggest"/>
   <copyField source="id" dest="content_autosuggest"/>
   <copyField source="username" dest="content_autosuggest"/>
   <copyField source="timestamp" dest="content_autosuggest"/>

solrconfig.xml
<searchComponent class="solr.SpellCheckComponent" name="suggest">
<lst name="spellchecker">
<str name="name">suggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
<str name="field">content_autosuggest</str> <!-- the indexed field to derive suggestions from -->
<str name="buildOnCommit">true</str>
</lst>
<str name="queryAnalyzerFieldType">text_auto</str>
</searchComponent>

<requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggest">
<lst name="defaults">
<str name="df">content_autosuggest</str>
<str name="spellcheck">true</str>
<str name="spellcheck.dictionary">suggest</str>
<str name="spellcheck.onlyMorePopular">true</str>
<str name="spellcheck.count">25</str>
<str name="spellcheck.collate">true</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
=============

i tried 

http://localhost:8983/solr/collection1/select?facet=true&fq=timestamp:[2013-01-01T00:00:00Z%20TO%202013-12-02T00:00:00Z]&facet.prefix=google


No result 
"<result name="response" numFound="0" start="0"/>"


BUT 


http://localhost:8983/solr/collection1/select?q=google 

i get
"<result name="response" numFound="4918" start="0">"
<doc>
<str name="id">103154</str>
<arr name="content_autosuggest">
<str>103154</str>
<str>John</str>
<str>2013-09-10T08:02:28Z</str>
<str>Google Chrome</str>
</arr>
<arr name="username">
<str>John</str>
</arr>
<arr name="timestamp">
<date>2013-09-10T08:02:28Z</date>
</arr>
<arr name="content">
<str>Google Chrome</str>
</arr>
<long name="_version_">1461215424741900288</long>
</doc>

Thanks 




On Thursday, February 27, 2014 1:08 PM, Ahmet Arslan <io...@yahoo.com> wrote:
 
Hi,

What do you mean by 'date range' ? Faceting component respects q or fq parameters, so if you set fq=date:[somedate TO otherdate] yes faceting values will change. facet.prefix can be used for auto complete.




On Thursday, February 27, 2014 5:03 PM, Bala Iyer <gr...@yahoo.com> wrote:
Hi,

I am new to solr, Is it possible to accomplish autocomplete through ( Terms or Suggest or Facet ) over a date range.

I need to have a autocomplete over a field between a  date range from another field.

Thanks

newbie

Re: Solr 4.7 Autocomplete

Posted by Ahmet Arslan <io...@yahoo.com>.
Hi,

What do you mean by 'date range' ? Faceting component respects q or fq parameters, so if you set fq=date:[somedate TO otherdate] yes faceting values will change. facet.prefix can be used for auto complete.



On Thursday, February 27, 2014 5:03 PM, Bala Iyer <gr...@yahoo.com> wrote:
Hi,

I am new to solr, Is it possible to accomplish autocomplete through ( Terms or Suggest or Facet ) over a date range.

I need to have a autocomplete over a field between a  date range from another field.

Thanks

newbie