Hi Grant,

Here are solr config files (attached) and java code (included below) to
recreate the test case.

Jason

        List<Pair<String, Integer>> terms = new ArrayList<Pair<String,
Integer>>();
        terms.add(new Pair<String, Integer>("chanel", 834));
        terms.add(new Pair<String, Integer>("chant", 10));
        terms.add(new Pair<String, Integer>("chang", 8));
        terms.add(new Pair<String, Integer>("chani", 4));
        terms.add(new Pair<String, Integer>("chand", 1));
        terms.add(new Pair<String, Integer>("chana", 1));
        terms.add(new Pair<String, Integer>("charl", 1));
        terms.add(new Pair<String, Integer>("chane", 1));
        terms.add(new Pair<String, Integer>("chan", 106));
        terms.add(new Pair<String, Integer>("chair", 1950));
        int id = 0;
        final CommonsHttpSolrServer client = new CommonsHttpSolrServer("
http://solr:8080/solr/";);
        client.setParser(new XMLResponseParser());
        for (Pair<String, Integer> term : terms) {
            final int freq = term.getSecond().intValue();
            for (int i = 0; i < freq; ++i) {
                SolrInputDocument doc = new SolrInputDocument();
                doc.addField("id", String.valueOf(++id));
                doc.addField("description", term.getFirst());
                client.add(doc);
            }
        }
        client.optimize();

Here's a Pair class:

public class Pair<S, T> {

    S first;

    T second;

    public Pair(S _first, T _second) {
        this.first = _first;
        this.second = _second;
    }

    public S getFirst() {
        return this.first;
    }

    public T getSecond() {
        return this.second;
    }

}
<?xml version="1.0" ?>

<config>
  <abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError>

  <dataDir>${solr.data.dir:./solr/data}</dataDir>

  <indexDefaults>
    <useCompoundFile>false</useCompoundFile>
    <mergeFactor>10</mergeFactor>
    <ramBufferSizeMB>32</ramBufferSizeMB>
    <maxMergeDocs>2147483647</maxMergeDocs>
    <maxFieldLength>10000</maxFieldLength>
    <writeLockTimeout>1000</writeLockTimeout>
    <commitLockTimeout>10000</commitLockTimeout>
    <lockType>single</lockType>
  </indexDefaults>

  <mainIndex>
    <useCompoundFile>false</useCompoundFile>
    <ramBufferSizeMB>32</ramBufferSizeMB>
    <mergeFactor>10</mergeFactor>
    <maxMergeDocs>2147483647</maxMergeDocs>
    <maxFieldLength>10000</maxFieldLength>
    <unlockOnStartup>false</unlockOnStartup>
  </mainIndex>

  <updateHandler class="solr.DirectUpdateHandler2" />

  <query>
    <maxBooleanClauses>1024</maxBooleanClauses>
    
    <filterCache
      class="solr.LRUCache"
      size="1024"
      initialSize="512"
      autowarmCount="256"/>

    <queryResultCache
      class="solr.LRUCache"
      size="16384"
      initialSize="4096"
      autowarmCount="256"/>

    <documentCache
      class="solr.LRUCache"
      size="16384"
      initialSize="4096"
      autowarmCount="0"/>

    <enableLazyFieldLoading>true</enableLazyFieldLoading>
    <useFilterForSortedQuery>true</useFilterForSortedQuery>
    <queryResultWindowSize>50</queryResultWindowSize>
    <queryResultMaxDocsCached>200</queryResultMaxDocsCached>
    <HashDocSet maxSize="3000" loadFactor="0.75"/>
    <boolTofilterOptimizer enabled="true" cacheSize="32" threshold=".05"/>

    <maxWarmingSearchers>4</maxWarmingSearchers>

  </query>

  <requestDispatcher handleSelect="true" >
    <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />
    <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" />
  </requestDispatcher>

  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true">
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <int name="rows">10</int>
       <str name="fl">*</str>
     </lst>
  </requestHandler>

  <requestHandler name="dismax" class="solr.DisMaxRequestHandler" >
     <str name="qf">description</str>
     <str name="fl">id description</str>
     <arr name="last-components">
       <str>spellcheck</str>
     </arr>
  </requestHandler>

  <searchComponent name="spellcheck" class="org.apache.solr.handler.component.SpellCheckComponent">
    <lst name="defaults">
      <str name="spellcheck.onlyMorePopular">true</str>
      <str name="spellcheck.extendedResults">true</str>
      <str name="spellcheck.count">10</str>
    </lst>

    <lst name="spellchecker">
      <str name="name">default</str>
      <str name="field">spellField</str>
      <str name="spellcheckIndexDir">./spellchecker</str>
      <str name="accuracy">0.5</str>
      <str name="buildOnCommit">true</str>
    </lst>

    <str name="queryAnalyzerFieldType">textSpell</str>
  </searchComponent>

  <queryConverter name="queryConverter" class="org.apache.solr.spelling.SpellingQueryConverter"/>

   <requestHandler name="/mlt" class="solr.MoreLikeThisHandler">
     <lst name="defaults">
       <str name="mlt.fl">manu,cat</str>
       <int name="mlt.mindf">1</int>
     </lst>
   </requestHandler>
  
  <requestHandler name="/search" class="org.apache.solr.handler.component.SearchHandler">
    <lst name="defaults">
      <str name="echoParams">explicit</str>
    </lst>
  </requestHandler>
  
  <requestHandler name="/elevate" class="org.apache.solr.handler.component.SearchHandler" startup="lazy">
    <lst name="defaults">
      <str name="echoParams">explicit</str>
    </lst>
    <arr name="last-components">
      <str>elevator</str>
    </arr>
  </requestHandler>
  
  <requestHandler name="/update" class="solr.XmlUpdateRequestHandler" />
  <requestHandler name="/analysis" class="solr.AnalysisRequestHandler" />
  <requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy" />
  <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
  
  <requestHandler name="/admin/ping" class="PingRequestHandler">
    <lst name="defaults">
      <str name="qt">standard</str>
      <str name="q">solrpingquery</str>
      <str name="echoParams">all</str>
    </lst>
  </requestHandler>
    
  <highlighting>
   <fragmenter name="gap" class="org.apache.solr.highlight.GapFragmenter" default="true">
    <lst name="defaults">
     <int name="hl.fragsize">100</int>
    </lst>
   </fragmenter>

   <fragmenter name="regex" class="org.apache.solr.highlight.RegexFragmenter">
    <lst name="defaults">
      <int name="hl.fragsize">70</int>
      <float name="hl.regex.slop">0.5</float> 
      <str name="hl.regex.pattern">[-\w ,/\n\"']{20,200}</str>
    </lst>
   </fragmenter>
   
   <formatter name="html" class="org.apache.solr.highlight.HtmlFormatter" default="true">
    <lst name="defaults">
     <str name="hl.simple.pre"><![CDATA[<em>]]></str>
     <str name="hl.simple.post"><![CDATA[</em>]]></str>
    </lst>
   </formatter>
  </highlighting>
  
  <queryResponseWriter name="xslt" class="org.apache.solr.request.XSLTResponseWriter">
    <int name="xsltCacheLifetimeSeconds">5</int>
  </queryResponseWriter> 
    
  <admin>
    <defaultQuery>solr</defaultQuery>
  </admin>

</config>
<?xml version="1.0" ?>

<schema name="example" version="1.1">
  <types>
    <fieldtype name="string" class="solr.StrField" sortMissingLast="true"/>
    <fieldtype name="boolean" class="solr.BoolField" sortMissingLast="true"/>
    <fieldtype name="integer" class="solr.IntField"/>
    <fieldtype name="long" class="solr.LongField"/>
    <fieldtype name="float" class="solr.FloatField"/>
    <fieldtype name="double" class="solr.DoubleField"/>
    <fieldtype name="sint" class="solr.SortableIntField" sortMissingLast="true"/>
    <fieldtype name="slong" class="solr.SortableLongField" sortMissingLast="true"/>
    <fieldtype name="sfloat" class="solr.SortableFloatField" sortMissingLast="true"/>
    <fieldtype name="sdouble" class="solr.SortableDoubleField" sortMissingLast="true"/>
    <fieldtype name="date" class="solr.DateField" sortMissingLast="true"/>

    <fieldtype name="text_lu" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory"/>
        <filter class="solr.EnglishPorterFilterFactory"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
      </analyzer>
    </fieldtype>

    <fieldtype name="text_ws" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      </analyzer>
    </fieldtype>

    <fieldtype name="text" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
          <tokenizer class="solr.WhitespaceTokenizerFactory"/>
          <filter class="solr.StopFilterFactory" ignoreCase="true"/>
          <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
          <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
      </analyzer>
    </fieldtype>

    <fieldtype name="textSpell" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
      </analyzer>
    </fieldtype>


    <fieldtype name="textTight" class="solr.TextField" positionIncrementGap="100" >
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
      </analyzer>
    </fieldtype>

 </types>

 <fields>
   <field name="id"          type="string"    indexed="true" stored="true"/>
   <field name="description" type="text"      indexed="true" stored="true"/>
   <field name="spellField"  type="textSpell" indexed="true" stored="true" />

   <dynamicField name="*_i"  type="sint"    indexed="true"  stored="true"/>
   <dynamicField name="*_s"  type="string"  indexed="true"  stored="true"/>
   <dynamicField name="*_l"  type="slong"   indexed="true"  stored="true"/>
   <dynamicField name="*_t"  type="text"    indexed="true"  stored="true"/>
   <dynamicField name="*_b"  type="boolean" indexed="true"  stored="true"/>
   <dynamicField name="*_f"  type="sfloat"  indexed="true"  stored="true"/>
   <dynamicField name="*_d"  type="sdouble" indexed="true"  stored="true"/>
   <dynamicField name="*_dt" type="date"    indexed="true"  stored="true"/>
 </fields>

 <uniqueKey>id</uniqueKey>

 <defaultSearchField>description</defaultSearchField>

 <copyField source="description" dest="spellField" />

</schema>

Reply via email to