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 ot...@apache.org on 2006/12/07 19:07:10 UTC
svn commit: r483579 -
/lucene/java/trunk/contrib/miscellaneous/src/java/org/apache/lucene/misc/LengthNormModifier.java
Author: otis
Date: Thu Dec 7 10:07:09 2006
New Revision: 483579
URL: http://svn.apache.org/viewvc?view=rev&rev=483579
Log:
- Reindented
Modified:
lucene/java/trunk/contrib/miscellaneous/src/java/org/apache/lucene/misc/LengthNormModifier.java
Modified: lucene/java/trunk/contrib/miscellaneous/src/java/org/apache/lucene/misc/LengthNormModifier.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/contrib/miscellaneous/src/java/org/apache/lucene/misc/LengthNormModifier.java?view=diff&rev=483579&r1=483578&r2=483579
==============================================================================
--- lucene/java/trunk/contrib/miscellaneous/src/java/org/apache/lucene/misc/LengthNormModifier.java (original)
+++ lucene/java/trunk/contrib/miscellaneous/src/java/org/apache/lucene/misc/LengthNormModifier.java Thu Dec 7 10:07:09 2006
@@ -1,20 +1,20 @@
package org.apache.lucene.misc;
/**
- * Copyright 2006 The Apache Software Foundation
- *
- * Licensed 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.
- */
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ */
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermEnum;
@@ -37,120 +37,120 @@
* index.
* </p>
*
- * @version $Id:$
+ * @version $Id$
*/
public class LengthNormModifier {
-
- /**
- * Command Line Execution method
- *
- * <pre>
- * Usage: LengthNormModifier /path/index package.SimilarityClassName field1 field2 ...
- * </pre>
- */
- public static void main(String[] args) throws IOException {
- if (args.length < 3) {
- System.err.println("Usage: LengthNormModifier <index> <package.SimilarityClassName> <field1> [field2] ...");
- System.exit(1);
- }
-
- Similarity s = null;
- try {
- Class simClass = Class.forName(args[1]);
- s = (Similarity)simClass.newInstance();
- } catch (Exception e) {
- System.err.println("Couldn't instantiate similarity with empty constructor: " + args[1]);
- e.printStackTrace(System.err);
- }
-
- File index = new File(args[0]);
- Directory d = FSDirectory.getDirectory(index,false);
-
- LengthNormModifier lnm = new LengthNormModifier(d, s);
-
- for (int i = 2; i < args.length; i++) {
- System.out.print("Updating field: " + args[i] + " " +
- (new Date()).toString() + " ... ");
- lnm.reSetNorms(args[i]);
- System.out.println(new Date().toString());
- }
-
- d.close();
+
+ /**
+ * Command Line Execution method
+ *
+ * <pre>
+ * Usage: LengthNormModifier /path/index package.SimilarityClassName field1 field2 ...
+ * </pre>
+ */
+ public static void main(String[] args) throws IOException {
+ if (args.length < 3) {
+ System.err.println("Usage: LengthNormModifier <index> <package.SimilarityClassName> <field1> [field2] ...");
+ System.exit(1);
}
-
-
- private Directory dir;
- private Similarity sim;
- /**
- * Constructor for code that wishes to use this class progromaticaly
- *
- * @param d The Directory to modify
- * @param s The Similarity to use in <code>reSetNorms</code>
- */
- public LengthNormModifier(Directory d, Similarity s) {
- dir = d;
- sim = s;
+ Similarity s = null;
+ try {
+ Class simClass = Class.forName(args[1]);
+ s = (Similarity)simClass.newInstance();
+ } catch (Exception e) {
+ System.err.println("Couldn't instantiate similarity with empty constructor: " + args[1]);
+ e.printStackTrace(System.err);
}
-
- /**
- * Re-Set the norms for the specified field.
- *
- * <p>
- * Opens a new IndexReader on the Directory given to this instance,
- * modifies the norms using the Similarity given to this instance,
- * and closes the IndexReader.
- * </p>
- *
- * @param field the field whose norms
- */
- public void reSetNorms(String field) throws IOException {
- String fieldName = field.intern();
- int[] termCounts = new int[0];
-
- IndexReader reader = null;
- TermEnum termEnum = null;
- TermDocs termDocs = null;
- try {
- reader = IndexReader.open(dir);
- termCounts = new int[reader.maxDoc()];
- try {
- termEnum = reader.terms(new Term(field,""));
- try {
- termDocs = reader.termDocs();
- do {
- Term term = termEnum.term();
- if (term != null && term.field().equals(fieldName)) {
- termDocs.seek(termEnum.term());
- while (termDocs.next()) {
- termCounts[termDocs.doc()] += termDocs.freq();
- }
- }
- } while (termEnum.next());
-
- } finally {
- if (null != termDocs) termDocs.close();
- }
- } finally {
- if (null != termEnum) termEnum.close();
- }
- } finally {
- if (null != reader) reader.close();
- }
-
- try {
- reader = IndexReader.open(dir);
- for (int d = 0; d < termCounts.length; d++) {
- if (! reader.isDeleted(d)) {
- byte norm = sim.encodeNorm
- (sim.lengthNorm(fieldName, termCounts[d]));
- reader.setNorm(d, fieldName, norm);
- }
- }
-
- } finally {
- if (null != reader) reader.close();
- }
+
+ File index = new File(args[0]);
+ Directory d = FSDirectory.getDirectory(index,false);
+
+ LengthNormModifier lnm = new LengthNormModifier(d, s);
+
+ for (int i = 2; i < args.length; i++) {
+ System.out.print("Updating field: " + args[i] + " " +
+ (new Date()).toString() + " ... ");
+ lnm.reSetNorms(args[i]);
+ System.out.println(new Date().toString());
}
+ d.close();
+ }
+
+
+ private Directory dir;
+ private Similarity sim;
+
+ /**
+ * Constructor for code that wishes to use this class progromaticaly
+ *
+ * @param d The Directory to modify
+ * @param s The Similarity to use in <code>reSetNorms</code>
+ */
+ public LengthNormModifier(Directory d, Similarity s) {
+ dir = d;
+ sim = s;
+ }
+
+ /**
+ * Re-Set the norms for the specified field.
+ *
+ * <p>
+ * Opens a new IndexReader on the Directory given to this instance,
+ * modifies the norms using the Similarity given to this instance,
+ * and closes the IndexReader.
+ * </p>
+ *
+ * @param field the field whose norms
+ */
+ public void reSetNorms(String field) throws IOException {
+ String fieldName = field.intern();
+ int[] termCounts = new int[0];
+
+ IndexReader reader = null;
+ TermEnum termEnum = null;
+ TermDocs termDocs = null;
+ try {
+ reader = IndexReader.open(dir);
+ termCounts = new int[reader.maxDoc()];
+ try {
+ termEnum = reader.terms(new Term(field,""));
+ try {
+ termDocs = reader.termDocs();
+ do {
+ Term term = termEnum.term();
+ if (term != null && term.field().equals(fieldName)) {
+ termDocs.seek(termEnum.term());
+ while (termDocs.next()) {
+ termCounts[termDocs.doc()] += termDocs.freq();
+ }
+ }
+ } while (termEnum.next());
+
+ } finally {
+ if (null != termDocs) termDocs.close();
+ }
+ } finally {
+ if (null != termEnum) termEnum.close();
+ }
+ } finally {
+ if (null != reader) reader.close();
+ }
+
+ try {
+ reader = IndexReader.open(dir);
+ for (int d = 0; d < termCounts.length; d++) {
+ if (! reader.isDeleted(d)) {
+ byte norm = sim.encodeNorm
+ (sim.lengthNorm(fieldName, termCounts[d]));
+ reader.setNorm(d, fieldName, norm);
+ }
+ }
+
+ } finally {
+ if (null != reader) reader.close();
+ }
+ }
+
}