You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by mi...@apache.org on 2009/07/13 12:06:02 UTC

svn commit: r793526 - in /lucene/java/trunk/contrib: CHANGES.txt lucli/src/java/lucli/LuceneMethods.java lucli/src/java/lucli/Lucli.java

Author: mikemccand
Date: Mon Jul 13 10:06:01 2009
New Revision: 793526

URL: http://svn.apache.org/viewvc?rev=793526&view=rev
Log:
LUCENE-1740: add 'analyzer' command to Lucli, to change analyzer from the default StandardAnalyzer

Modified:
    lucene/java/trunk/contrib/CHANGES.txt
    lucene/java/trunk/contrib/lucli/src/java/lucli/LuceneMethods.java
    lucene/java/trunk/contrib/lucli/src/java/lucli/Lucli.java

Modified: lucene/java/trunk/contrib/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/java/trunk/contrib/CHANGES.txt?rev=793526&r1=793525&r2=793526&view=diff
==============================================================================
--- lucene/java/trunk/contrib/CHANGES.txt (original)
+++ lucene/java/trunk/contrib/CHANGES.txt Mon Jul 13 10:06:01 2009
@@ -68,6 +68,10 @@
 
  8. LUCENE-1522: Added contrib/fast-vector-highlighter, a new alternative
     highlighter.  (Koji Sekiguchi via Mike McCandless)
+
+ 9. LUCENE-1740: Added "analyzer" command to Lucli, enabling changing
+    the analyzer from the default StandardAnalyzer.  (Bernd Fondermann
+    via Mike McCandless)
  
 Optimizations
 

Modified: lucene/java/trunk/contrib/lucli/src/java/lucli/LuceneMethods.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/contrib/lucli/src/java/lucli/LuceneMethods.java?rev=793526&r1=793525&r2=793526&view=diff
==============================================================================
--- lucene/java/trunk/contrib/lucli/src/java/lucli/LuceneMethods.java (original)
+++ lucene/java/trunk/contrib/lucli/src/java/lucli/LuceneMethods.java Mon Jul 13 10:06:01 2009
@@ -104,12 +104,29 @@
   private String fieldsArray[]; //Fields as an array
   private Searcher searcher;
   private Query query; //current query string
+  private String analyzerClassFQN = null; // Analyzer class, if NULL, use default Analyzer
 
   public LuceneMethods(String index) {
     indexName = index;
     message("Lucene CLI. Using directory '" + indexName + "'. Type 'help' for instructions.");
   }
 
+    private Analyzer createAnalyzer() {
+        if (analyzerClassFQN == null) return new StandardAnalyzer();
+        try {
+            Class aClass = Class.forName(analyzerClassFQN);
+            Object obj = aClass.newInstance();
+            if (!(obj instanceof Analyzer)) {
+                message("Given class is not an Analyzer: " + analyzerClassFQN);
+                return new StandardAnalyzer();
+            }
+            return (Analyzer)obj;
+        } catch (Exception e) {
+            message("Unable to use Analyzer " + analyzerClassFQN);
+            return new StandardAnalyzer();
+        }
+    }
+
 
   public void info() throws java.io.IOException {
     IndexReader indexReader = IndexReader.open(indexName);
@@ -185,9 +202,9 @@
     //another option is to just do message(doc);
   }
 
-  public void optimize() throws IOException {
+    public void optimize() throws IOException {
     //open the index writer. False: don't create a new one
-    IndexWriter indexWriter = new IndexWriter(indexName, new StandardAnalyzer(), false);
+    IndexWriter indexWriter = new IndexWriter(indexName, createAnalyzer(), false);
     message("Starting to optimize index.");
     long start = System.currentTimeMillis();
     indexWriter.optimize();
@@ -196,10 +213,10 @@
   }
 
 
-  private Query explainQuery(String queryString) throws IOException, ParseException {
+    private Query explainQuery(String queryString) throws IOException, ParseException {
 
     searcher = new IndexSearcher(indexName);
-    Analyzer analyzer = new StandardAnalyzer();
+    Analyzer analyzer = createAnalyzer();
     getFieldInfo();
 
     int arraySize = indexedFields.size();
@@ -220,7 +237,7 @@
   private Hits initSearch(String queryString) throws IOException, ParseException {
 
     searcher = new IndexSearcher(indexName);
-    Analyzer analyzer = new StandardAnalyzer();
+    Analyzer analyzer = createAnalyzer();
     getFieldInfo();
 
     int arraySize = fields.size();
@@ -278,7 +295,7 @@
     Map tokenMap = new HashMap();
     final int maxFieldLength = 10000;
 
-    Analyzer analyzer = new StandardAnalyzer();
+    Analyzer analyzer = createAnalyzer();
     Iterator fields = doc.getFields().iterator();
     final Token reusableToken = new Token();
     while (fields.hasNext()) {
@@ -374,5 +391,14 @@
     return entries;
   }
 
+    public void analyzer(String word) {
+        if ("current".equals(word)) {
+            String current = analyzerClassFQN == null ? "StandardAnalyzer" : analyzerClassFQN;
+            message("The currently used Analyzer class is: " + current);
+            return;
+        }
+        analyzerClassFQN = word;
+        message("Switched to Analyzer class " + analyzerClassFQN);
+    }
 }
 

Modified: lucene/java/trunk/contrib/lucli/src/java/lucli/Lucli.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/contrib/lucli/src/java/lucli/Lucli.java?rev=793526&r1=793525&r2=793526&view=diff
==============================================================================
--- lucene/java/trunk/contrib/lucli/src/java/lucli/Lucli.java (original)
+++ lucene/java/trunk/contrib/lucli/src/java/lucli/Lucli.java Mon Jul 13 10:06:01 2009
@@ -95,6 +95,7 @@
 	final static int INDEX = 7;
 	final static int TOKENS = 8;
 	final static int EXPLAIN = 9;
+	final static int ANALYZER = 10;
 
 	String historyFile;
 	TreeMap commandMap = new TreeMap();
@@ -124,6 +125,7 @@
 		addCommand("index", INDEX, "Choose a different lucene index. Example index my_index", 1);
 		addCommand("tokens", TOKENS, "Does a search and shows the top 10 tokens for each document. Verbose! Example: tokens foo", 1);
 		addCommand("explain", EXPLAIN, "Explanation that describes how the document scored against query. Example: explain foo", 1);
+		addCommand("analyzer", ANALYZER, "Specifies the Analyzer class to be used. Example: analyzer org.apache.lucene.analysis.SimpleAnalyzer", 1);
 
 		//parse command line arguments
 		parseArgs(args);
@@ -234,6 +236,9 @@
 				}
 				luceneMethods.search(query, true, false, cr);
 				break;
+			case ANALYZER:
+				luceneMethods.analyzer(words[1]);
+				break;
 			case HELP:
 				help();
 				break;