<?xml version="1.0" encoding="UTF-8" ?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 
================================================================================
 This configuration file as been created for EDEAL CRM software
 
 If you need an introduction to solr features or configuration you may take a look at
 http://www.ibm.com/developerworks/java/library/j-solr1/
 
 See also solrconfig-example.xml for full commented configuration file.
 Solr wiki can be found at http://wiki.apache.org/solr/
 ================================================================================
-->

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

  <!-- Used to specify an alternate directory to hold all index data other than the default ./data under the Solr home.
       <dataDir>${solr.data.dir:./data}</dataDir>
	   <dataDir>${./solr/${solr.core.name}/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>
  
  <jmx />

  
  <updateHandler class="org.apache.solr.update.DirectUpdateHandler2">
  </updateHandler>


  <query>
    <maxBooleanClauses>1024</maxBooleanClauses>
    <filterCache
      class="org.apache.solr.search.LRUCache"
      size="512"
      initialSize="512"
      autowarmCount="128"/>

    <queryResultCache
      class="org.apache.solr.search.LRUCache"
      size="512"
      initialSize="512"
      autowarmCount="32"/>

    <documentCache
      class="org.apache.solr.search.LRUCache"
      size="512"
      initialSize="512"
      autowarmCount="0"/>

    <enableLazyFieldLoading>true</enableLazyFieldLoading>
    <queryResultWindowSize>50</queryResultWindowSize>
    <queryResultMaxDocsCached>200</queryResultMaxDocsCached>
    <HashDocSet maxSize="3000" loadFactor="0.75"/>

    <listener event="newSearcher" class="org.apache.solr.core.QuerySenderListener">
      <arr name="queries">
        <lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst>
        <lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst>
        <lst> <str name="q">static newSearcher warming query from solrconfig.xml</str></lst>
      </arr>
    </listener>

    <listener event="firstSearcher" class="org.apache.solr.core.QuerySenderListener">
      <arr name="queries">
        <lst> <str name="q">fast_warm</str> <str name="start">0</str> <str name="rows">10</str> </lst>
        <lst> <str name="q">static firstSearcher warming query from solrconfig.xml</str></lst>
      </arr>
    </listener>

    <useColdSearcher>false</useColdSearcher>
    <maxWarmingSearchers>2</maxWarmingSearchers>
  </query>

  
  <requestDispatcher handleSelect="true" >
    <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />
    <httpCaching lastModifiedFrom="openTime"
                 etagSeed="Solr">
    </httpCaching>
  </requestDispatcher>
  
  <!-- Requests Handlers -->
  <requestHandler name="standard" class="org.apache.solr.handler.component.SearchHandler" default="true">
     <lst name="defaults">
       <str name="echoParams">explicit</str>
     </lst>
  </requestHandler>
  
  
  <searchComponent name="edealAccess" class="com.edeal.frontline.fulltextsearch.AccessFilterComponent">
  </searchComponent>
  
  <requestHandler name="edeal" class="org.apache.solr.handler.component.SearchHandler">
	<lst name="defaults">
		<str name="echoParams">explicit</str>
		<str name="sort">meta_object asc, score desc</str>
		<str name="df">prim</str>
		<str name="rows">100</str>
		<str name="hl">true</str>
		<str name="hl.fl">all</str>
		<str name="hl.snippets">4</str>
		<str name="hl.fragsize">0</str>
		<str name="hl.fragmenter">gap</str>
		<str name="facet">true</str>
		<str name="facet.field">facet_*</str> <!-- this require SOLR-247 patch-->
		<str name="facet.limit">6</str>
		<str name="facet.mincount">1</str>
		<str name="spellcheck">true</str>
		<str name="spellcheck.onlyMorePopular">false</str>
		<str name="spellcheck.extendedResults">false</str>
		<str name="spellcheck.count">1</str>
		<str name="spellcheck.collate">true</str>
		<str name="spellcheck.dictionary">default</str>
    </lst>
    <arr name="last-components">
		 <str>spellcheck</str>
		<str>edealAccess</str>
    </arr>
  </requestHandler>
  

  <searchComponent name="spellcheck" class="org.apache.solr.handler.component.SpellCheckComponent">
    <str name="queryAnalyzerFieldType">textSpell</str>
    <lst name="spellchecker">
      <str name="name">default</str>
      <str name="field">spell</str>
	  <str name="accuracy">0.5</str>
      <str name="spellcheckIndexDir">./spellchecker1</str>
	  <str name="buildOnCommit">true</str>
    </lst>
    <lst name="spellchecker">
      <str name="name">jarowinkler</str>
      <str name="field">spell</str>
      <str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>
      <str name="spellcheckIndexDir">./spellchecker2</str>
	  <str name="buildOnCommit">true</str>
    </lst>
    <lst name="spellchecker">
      <str name="classname">org.apache.solr.spelling.FileBasedSpellChecker</str>
      <str name="name">file</str>
      <str name="sourceLocation">spellings.txt</str>
      <str name="characterEncoding">UTF-8</str>
      <str name="spellcheckIndexDir">./spellcheckerFile</str>
    </lst>
  </searchComponent>

  <requestHandler name="/spellCheckCompRH" class="org.apache.solr.handler.component.SearchHandler">
    <lst name="defaults">
      <str name="spellcheck.onlyMorePopular">false</str>
      <str name="spellcheck.extendedResults">false</str>
      <str name="spellcheck.count">1</str>
    </lst>
    <arr name="last-components">
      <str>spellcheck</str>
    </arr>
  </requestHandler>


  <searchComponent name="elevator" class="org.apache.solr.handler.component.QueryElevationComponent" >
    <str name="queryFieldType">string</str>
    <str name="config-file">elevate.xml</str>
  </searchComponent>
 
  <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>

<!-- Uncomment and use this to add/update/delete document from an XML source.
Warning : you will have to handle acces rights 
-->
  <requestHandler name="/update" class="org.apache.solr.handler.XmlUpdateRequestHandler" />
  <requestHandler name="/update/csv" class="org.apache.solr.handler.CSVRequestHandler" startup="lazy" />

  <requestHandler name="/analysis" class="org.apache.solr.handler.AnalysisRequestHandler" startup="lazy"/>

  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
		<lst name="defaults">
			<str name="config">db-data-config.xml</str>
		</lst>
  </requestHandler>

  <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" startup="lazy"/>
  
  <requestHandler name="/admin/ping" class="org.apache.solr.handler.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[]]></str>
	 <str name="hl.simple.post"><![CDATA[]]></str>
	</lst>
	</formatter>
  </highlighting>
  
  
  <queryResponseWriter name="xslt" class="org.apache.solr.request.XSLTResponseWriter">
    <int name="xsltCacheLifetimeSeconds">600</int>
  </queryResponseWriter> 

  <admin>
    <defaultQuery>solr</defaultQuery>
  </admin>
	
	<luceneMatchVersion>LUCENE_33</luceneMatchVersion>
</config>
