Author: gsingers
Date: Mon Jun 23 16:59:12 2008
New Revision: 670973

URL: http://svn.apache.org/viewvc?rev=670973&view=rev
Log:
SOLR-604: Make relative spellchecking dir be relative to the Solr data dir.  
Also added sample file based sc to the example

Added:
    lucene/solr/trunk/example/solr/conf/spellings.txt   (with props)
Modified:
    lucene/solr/trunk/CHANGES.txt
    lucene/solr/trunk/example/solr/conf/solrconfig.xml
    lucene/solr/trunk/src/java/org/apache/solr/core/SolrResourceLoader.java
    
lucene/solr/trunk/src/java/org/apache/solr/spelling/AbstractLuceneSpellChecker.java
    
lucene/solr/trunk/src/java/org/apache/solr/spelling/FileBasedSpellChecker.java
    
lucene/solr/trunk/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java
    lucene/solr/trunk/src/test/test-files/solr/conf/solrconfig.xml

Modified: lucene/solr/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?rev=670973&r1=670972&r2=670973&view=diff
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Mon Jun 23 16:59:12 2008
@@ -438,7 +438,9 @@
     problems in Resin, and could potentially cause problems for customized
     usages of SolrServlet.
 
-36. SOLR-585: Now sets the QParser on the ResponseBuilder (gsingers) 
+36. SOLR-585: Now sets the QParser on the ResponseBuilder (gsingers)
+
+37. SOLR-604: If the spellchecking path is relative, make it relative to the 
Solr Data Directory.  (Shalin Shekhar Mangar via gsingers)
 
 Other Changes
  1. SOLR-135: Moved common classes to org.apache.solr.common and altered the

Modified: lucene/solr/trunk/example/solr/conf/solrconfig.xml
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/example/solr/conf/solrconfig.xml?rev=670973&r1=670972&r2=670973&view=diff
==============================================================================
--- lucene/solr/trunk/example/solr/conf/solrconfig.xml (original)
+++ lucene/solr/trunk/example/solr/conf/solrconfig.xml Mon Jun 23 16:59:12 2008
@@ -504,7 +504,7 @@
     <lst name="spellchecker">
       <str name="name">default</str>
       <str name="field">spell</str>
-      <str name="spellcheckIndexDir">./spellchecker</str>
+      <str name="spellcheckIndexDir">./spellchecker1</str>
 
     </lst>
     <lst name="spellchecker">
@@ -512,17 +512,17 @@
       <str name="field">spell</str>
       <!-- Use a different Distance Measure -->
       <str 
name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>
-      <str name="spellcheckIndexDir">./spellchecker</str>
+      <str name="spellcheckIndexDir">./spellchecker2</str>
 
     </lst>
 
-    <!--<lst name="spellchecker">
+    <lst name="spellchecker">
       <str name="classname">solr.FileBasedSpellChecker</str>
-      <str name="name">external</str>
+      <str name="name">file</str>
       <str name="sourceLocation">spellings.txt</str>
       <str name="characterEncoding">UTF-8</str>
-      <str name="indexDir">./spellchecker</str>
-    </lst>-->
+      <str name="indexDir">./spellcheckerFile</str>
+    </lst>
   </searchComponent>
 
   <queryConverter name="queryConverter" 
class="org.apache.solr.spelling.SpellingQueryConverter"/>

Added: lucene/solr/trunk/example/solr/conf/spellings.txt
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/example/solr/conf/spellings.txt?rev=670973&view=auto
==============================================================================
--- lucene/solr/trunk/example/solr/conf/spellings.txt (added)
+++ lucene/solr/trunk/example/solr/conf/spellings.txt Mon Jun 23 16:59:12 2008
@@ -0,0 +1,2 @@
+pizza
+history
\ No newline at end of file

Propchange: lucene/solr/trunk/example/solr/conf/spellings.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
lucene/solr/trunk/src/java/org/apache/solr/core/SolrResourceLoader.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/core/SolrResourceLoader.java?rev=670973&r1=670972&r2=670973&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/core/SolrResourceLoader.java 
(original)
+++ lucene/solr/trunk/src/java/org/apache/solr/core/SolrResourceLoader.java Mon 
Jun 23 16:59:12 2008
@@ -64,6 +64,7 @@
 
   private final ClassLoader classLoader;
   private final String instanceDir;
+  private String dataDir;
   
   private final List<SolrCoreAware> waitingForCore = new 
ArrayList<SolrCoreAware>();
   private final List<ResourceLoaderAware> waitingForResources = new 
ArrayList<ResourceLoaderAware>();
@@ -122,6 +123,10 @@
   public String getConfigDir() {
     return instanceDir + "conf/";
   }
+  
+  public String getDataDir()    {
+    return dataDir;
+  }
 
   /** Opens a schema resource by its name.
    * Override this method to customize loading schema resources.
@@ -283,6 +288,7 @@
    */
   public void inform(SolrCore core) 
   {
+    this.dataDir = core.getDataDir();
     for( SolrCoreAware aware : waitingForCore ) {
       aware.inform( core );
     }

Modified: 
lucene/solr/trunk/src/java/org/apache/solr/spelling/AbstractLuceneSpellChecker.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/spelling/AbstractLuceneSpellChecker.java?rev=670973&r1=670972&r2=670973&view=diff
==============================================================================
--- 
lucene/solr/trunk/src/java/org/apache/solr/spelling/AbstractLuceneSpellChecker.java
 (original)
+++ 
lucene/solr/trunk/src/java/org/apache/solr/spelling/AbstractLuceneSpellChecker.java
 Mon Jun 23 16:59:12 2008
@@ -1,23 +1,24 @@
 package org.apache.solr.spelling;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
 import org.apache.lucene.analysis.Token;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.spell.Dictionary;
+import org.apache.lucene.search.spell.LevensteinDistance;
 import org.apache.lucene.search.spell.SpellChecker;
 import org.apache.lucene.search.spell.StringDistance;
-import org.apache.lucene.search.spell.LevensteinDistance;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.store.RAMDirectory;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.SolrResourceLoader;
 
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 
 /**
  * Abstract base class for all Lucene based spell checking implementations.
@@ -51,6 +52,12 @@
   public String init(NamedList config, SolrResourceLoader loader) {
     super.init(config, loader);
     indexDir = (String) config.get(INDEX_DIR);
+    //If indexDir is relative then create index inside core.getDataDir()
+    if (indexDir != null)   {
+      if (!new File(indexDir).isAbsolute()) {
+        indexDir = loader.getDataDir() + File.separator + indexDir;
+      }
+    }
     sourceLocation = (String) config.get(LOCATION);
     field = (String) config.get(FIELD);
     String strDistanceName = (String)config.get(STRING_DISTANCE);

Modified: 
lucene/solr/trunk/src/java/org/apache/solr/spelling/FileBasedSpellChecker.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/spelling/FileBasedSpellChecker.java?rev=670973&r1=670972&r2=670973&view=diff
==============================================================================
--- 
lucene/solr/trunk/src/java/org/apache/solr/spelling/FileBasedSpellChecker.java 
(original)
+++ 
lucene/solr/trunk/src/java/org/apache/solr/spelling/FileBasedSpellChecker.java 
Mon Jun 23 16:59:12 2008
@@ -115,7 +115,7 @@
         analyzer = fieldType.getQueryAnalyzer();
       } else {
         log.warning("No fieldType: " + fieldTypeName
-                + " found for dictionary: " + name);
+                + " found for dictionary: " + name + ".  Using 
WhitespaceAnalzyer.");
         analyzer = new WhitespaceAnalyzer();
 
         // check if character encoding is defined

Modified: 
lucene/solr/trunk/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java?rev=670973&r1=670972&r2=670973&view=diff
==============================================================================
--- 
lucene/solr/trunk/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java
 (original)
+++ 
lucene/solr/trunk/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java
 Mon Jun 23 16:59:12 2008
@@ -17,6 +17,11 @@
 
 package org.apache.solr.handler.component;
 
+import java.io.File;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.MapSolrParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
@@ -27,12 +32,8 @@
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrQueryResponse;
 import org.apache.solr.request.SolrRequestHandler;
-import org.apache.solr.util.AbstractSolrTestCase;
 import org.apache.solr.spelling.IndexBasedSpellChecker;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
+import org.apache.solr.util.AbstractSolrTestCase;
 
 /**
  * @since solr 1.3
@@ -140,8 +141,6 @@
 
     idx = blue.indexOf("suggestion", idx + 1);
     assertTrue(idx + " does not equal: " + -1, idx == -1);
-
-
   }
 
   public void test() throws Exception {
@@ -281,6 +280,37 @@
 
 
   }
+  
+  @SuppressWarnings("unchecked")
+  public void testRelativeIndexDirLocation() throws Exception {
+    SolrCore core = h.getCore();
+    Map<String, String> args = new HashMap<String, String>();
+
+    args.put(CommonParams.Q, "test");
+    args.put(CommonParams.QT, "spellCheckCompRH");
+    args.put(SpellCheckComponent.SPELLCHECK_BUILD, "true");
+    args.put(SpellCheckComponent.COMPONENT_NAME, "true");
+    SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(
+        args));
+
+    File indexDir = new File(core.getDataDir() + File.separator
+        + "spellchecker1");
+    assertTrue(
+        "spellcheckerIndexDir was not created inside the configured value for 
dataDir folder as configured in solrconfig.xml",
+        indexDir.exists());
+    
+    indexDir = new File(core.getDataDir() + File.separator
+        + "spellchecker2");
+    assertTrue(
+        "spellcheckerIndexDir was not created inside the configured value for 
dataDir folder as configured in solrconfig.xml",
+        indexDir.exists());
+    
+    indexDir = new File(core.getDataDir() + File.separator
+        + "spellchecker3");
+    assertTrue(
+        "spellcheckerIndexDir was not created inside the configured value for 
dataDir folder as configured in solrconfig.xml",
+        indexDir.exists());
+  }
 
   // TODO: add more tests for various spelling options
 

Modified: lucene/solr/trunk/src/test/test-files/solr/conf/solrconfig.xml
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/test-files/solr/conf/solrconfig.xml?rev=670973&r1=670972&r2=670973&view=diff
==============================================================================
--- lucene/solr/trunk/src/test/test-files/solr/conf/solrconfig.xml (original)
+++ lucene/solr/trunk/src/test/test-files/solr/conf/solrconfig.xml Mon Jun 23 
16:59:12 2008
@@ -331,8 +331,7 @@
     <lst name="spellchecker">
       <str name="name">default</str>
       <str name="field">lowerfilt</str>
-      <str name="spellcheckIndexDir">./spellchecker</str>
-
+      <str name="spellcheckIndexDir">spellchecker1</str>
     </lst>
     <!-- Example of using different distance measure -->
     <lst name="spellchecker">
@@ -340,7 +339,7 @@
       <str name="field">lowerfilt</str>
       <!-- Use a different Distance Measure -->
       <str 
name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>
-      <str name="spellcheckIndexDir">./spellchecker</str>
+      <str name="spellcheckIndexDir">spellchecker2</str>
 
     </lst>
     <lst name="spellchecker">
@@ -348,7 +347,7 @@
       <str name="name">external</str>
       <str name="sourceLocation">spellings.txt</str>
       <str name="characterEncoding">UTF-8</str>
-      <str name="spellcheckIndexDir">./spellchecker</str>
+      <str name="spellcheckIndexDir">spellchecker3</str>
     </lst>
   </searchComponent>
   <!--


Reply via email to