svn commit: r710170 - in /xml/xindice/trunk: java/src/org/apache/xindice/core/indexer/ java/src/org/apache/xindice/core/query/ftsearch/ lib/

[email protected]
Newsgroups gmane.text.xml.xindice.devel
Message-ID <[email protected]>
Author: natalia
Date: Mon Nov  3 13:35:52 2008
New Revision: 710170

URL: http://svn.apache.org/viewvc?rev=710170&view=rev
Log:
Updated Lucene to version 2.4.0

Added:
    xml/xindice/trunk/lib/lucene-core-2.4.0.jar   (with props)
Removed:
    xml/xindice/trunk/lib/lucene-core-2.3.2.jar
Modified:
    xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/LuceneIndexer.java
    xml/xindice/trunk/java/src/org/apache/xindice/core/query/ftsearch/NodeReader.java
    xml/xindice/trunk/java/src/org/apache/xindice/core/query/ftsearch/Searcher.java
    xml/xindice/trunk/java/src/org/apache/xindice/core/query/ftsearch/SpecialQueryParser.java

Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/LuceneIndexer.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/LuceneIndexer.java?rev=710170&r1=710169&r2=710170&view=diff
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/LuceneIndexer.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/LuceneIndexer.java Mon Nov  3 13:35:52 2008
@@ -21,35 +21,33 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.xindice.core.Collection;
-import org.apache.xindice.core.DBObject;
-import org.apache.xindice.core.DBException;
-import org.apache.xindice.core.data.Key;
-import org.apache.xindice.core.FaultCodes;
-import org.apache.xindice.core.query.CompilationException;
-import org.apache.xindice.core.query.ProcessingException;
-import org.apache.xindice.util.Configuration;
-import org.apache.xindice.util.XindiceException;
-import org.apache.xindice.util.StringUtilities;
-
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.queryParser.ParseException;
+import org.apache.lucene.queryParser.QueryParser;
 import org.apache.lucene.search.Hits;
-import org.apache.lucene.search.Hit;
+import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
-import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.queryParser.ParseException;
+import org.apache.lucene.search.TopDocs;
+import org.apache.xindice.core.Collection;
+import org.apache.xindice.core.DBException;
+import org.apache.xindice.core.DBObject;
+import org.apache.xindice.core.FaultCodes;
+import org.apache.xindice.core.data.Key;
+import org.apache.xindice.core.query.CompilationException;
+import org.apache.xindice.core.query.ProcessingException;
+import org.apache.xindice.util.Configuration;
+import org.apache.xindice.util.StringUtilities;
+import org.apache.xindice.util.XindiceException;
 
 import java.io.File;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Iterator;
-import java.util.ArrayList;
 
 /**
  * LuceneIndexer is used for maintaining full text indexes. It operates on
@@ -94,7 +92,6 @@
 
     // Default analyzer to use
     public static final String DEFANALYZER = "org.apache.lucene.analysis.SimpleAnalyzer";
-    private static final IndexMatch[] EMPTY_MATCHES = new IndexMatch[0];
 
     private File          idxFile;
     private IndexWriter   iw;
@@ -330,7 +327,7 @@
 
         try {
             if (iw == null) {
-                iw = new IndexWriter(getFile(), getAnalyzer(), create);
+                iw = new IndexWriter(getFile(), getAnalyzer(), create, IndexWriter.MaxFieldLength.UNLIMITED);
             }
         } catch (IOException e) {
             if (create) {
@@ -377,9 +374,9 @@
         try {
             assertOpen();
             if (iw != null) {
-                iw.flush();
+                iw.commit();
 
-                int nDocs = iw.docCount();
+                int nDocs = iw.maxDoc();
                 /* Fairly arbitrary rules for triggering index optimisation. Need to
                  * play with these.
                  */
@@ -446,11 +443,11 @@
             public void onValueAdded(IndexPattern pattern, String value, Key key, int pos, int len, short elemID, short attrID) {
                 if (doc == null) {
                     doc = new Document();
-                    doc.add(new Field(KEYNAME, key.toString(), Field.Store.YES, Field.Index.UN_TOKENIZED));
+                    doc.add(new Field(KEYNAME, key.toString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
                 }
 
                 String field = (String) patterns.get(pattern);
-                doc.add(new Field(field, value, Field.Store.NO, Field.Index.TOKENIZED, Field.TermVector.YES));
+                doc.add(new Field(field, value, Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.YES));
             }
         };
     }
@@ -478,15 +475,17 @@
      * @throws DBException if IOException prevented indexer from executing the query.
      */
     public IndexMatch[] queryMatches(Query query) throws DBException {
-        ArrayList matches = new ArrayList();
+        IndexMatch[] matches = null;
         Searcher searcher = getSearcher();
 
         try {
-            Hits hits = searcher.search(query);
-            for (Iterator i = hits.iterator(); i.hasNext(); ) {
-                Hit hit = (Hit) i.next();
-                Key key = new Key(hit.getDocument().getField(KEYNAME).stringValue());
-                matches.add(new IndexMatch(key, -1, -1));
+            TopDocs docs = searcher.is.search(query, searcher.ir.numDocs());
+            matches = new IndexMatch[docs.scoreDocs.length];
+
+            for (int i = 0; i < docs.scoreDocs.length; i++) {
+                int doc = docs.scoreDocs[i].doc;
+                Key key = new Key(searcher.ir.document(doc).getField(KEYNAME).stringValue());
+                matches[i] = new IndexMatch(key, -1, -1);
             }
         } catch (IOException e) {
             throw new ProcessingException("Failed to process a query", e);
@@ -494,7 +493,7 @@
             searcher.free();
         }
 
-        return (IndexMatch[]) matches.toArray(EMPTY_MATCHES);
+        return matches;
     }
 
     /**
@@ -504,7 +503,7 @@
      * return Searcher instance it created previously.
      *
      * @return current Searcher
-     * @throws DBException
+     * @throws DBException If index could not be accessed
      */
     private synchronized Searcher getSearcher() throws DBException {
 
@@ -590,6 +589,13 @@
             }
         }
 
+        /**
+         * Internal search method.
+         * @param query Search query
+         * @return Hits for the search
+         * @throws DBException Index could not be accessed
+         * @deprecated Deprecated following Lucene changes
+         */
         public Hits search(Query query) throws DBException {
             try {
                 return is.search(query);

Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/query/ftsearch/NodeReader.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/query/ftsearch/NodeReader.java?rev=710170&r1=710169&r2=710170&view=diff
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/query/ftsearch/NodeReader.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/query/ftsearch/NodeReader.java Mon Nov  3 13:35:52 2008
@@ -80,9 +80,10 @@
 
             TokenStream stream = analyzer.tokenStream("", new StringReader(text));
             try {
+                Token reusableToken = new Token();
                 Token token;
-                while ((token = stream.next()) != null) {
-                    nodes[i].add(new String(token.termBuffer(), 0, token.termLength()));
+                while ((token = stream.next(reusableToken)) != null) {
+                    nodes[i].add(token.term());
                 }
             } catch (IOException e) {
                 // won't happen

Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/query/ftsearch/Searcher.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/query/ftsearch/Searcher.java?rev=710170&r1=710169&r2=710170&view=diff
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/query/ftsearch/Searcher.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/query/ftsearch/Searcher.java Mon Nov  3 13:35:52 2008
@@ -19,14 +19,14 @@
 
 package org.apache.xindice.core.query.ftsearch;
 
-import org.w3c.dom.NodeList;
 import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.queryParser.QueryParser;
 import org.apache.lucene.queryParser.ParseException;
+import org.apache.lucene.queryParser.QueryParser;
 import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Hits;
 import org.apache.lucene.search.Query;
+import org.apache.lucene.search.TopDocs;
 import org.apache.xindice.core.data.NodeSet;
+import org.w3c.dom.NodeList;
 
 import java.io.IOException;
 
@@ -69,36 +69,31 @@
         Query compQuery = new QueryParser("", analyzer).parse(query);
         NodeReader reader = new NodeReader(nodes, analyzer);
         IndexSearcher searcher = new IndexSearcher(reader);
-        Hits hits = null;
+
+        TopDocs docs = null;
         try {
-            hits = searcher.search(compQuery);
+            docs = searcher.search(compQuery, reader.numDocs());
         } catch (IOException e) {
             // this searcher does not use file IO, exception won't happen
         }
 
-        return new ResultSet(hits);
+        return new ResultSet(docs);
     }
 
     private class ResultSet implements NodeSet {
-        private Hits hits;
+        private TopDocs docs;
         private int count;
 
-        private ResultSet(Hits hits) {
-            this.hits = hits;
+        private ResultSet(TopDocs docs) {
+            this.docs = docs;
         }
 
         public boolean hasMoreNodes() {
-            return count < hits.length();
+            return count < docs.scoreDocs.length;
         }
 
         public Object getNextNode() {
-            try {
-                return nodes.item(hits.id(count++));
-            } catch (IOException e) {
-                // ignore, does not use IO
-            }
-
-            return null;
+            return nodes.item(docs.scoreDocs[count++].doc);
         }
     }
 }

Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/query/ftsearch/SpecialQueryParser.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/query/ftsearch/SpecialQueryParser.java?rev=710170&r1=710169&r2=710170&view=diff
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/query/ftsearch/SpecialQueryParser.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/query/ftsearch/SpecialQueryParser.java Mon Nov  3 13:35:52 2008
@@ -19,14 +19,14 @@
 
 package org.apache.xindice.core.query.ftsearch;
 
-import org.apache.lucene.queryParser.QueryParser;
+import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.queryParser.CharStream;
+import org.apache.lucene.queryParser.QueryParser;
 import org.apache.lucene.queryParser.QueryParserTokenManager;
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.search.Query;
 import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.Query;
 
-import java.util.Vector;
+import java.util.List;
 
 /**
  * Specialized parser for text queries that ignores query clauses that have
@@ -59,12 +59,12 @@
      * boolean clauses that have 'prohibited' modifier.
      * @see QueryParser#addClause(java.util.Vector, int, int, org.apache.lucene.search.Query)
      */
-    protected void addClause(Vector clauses, int conj, int mods, Query q) {
+    protected void addClause(List clauses, int conj, int mods, Query q) {
 
         // If this term is introduced by AND, make the preceding term required,
         // unless it's already prohibited
         if (clauses.size() > 0 && conj == CONJ_AND) {
-            BooleanClause c = (BooleanClause) clauses.elementAt(clauses.size()-1);
+            BooleanClause c = (BooleanClause) clauses.get(clauses.size()-1);
             if (!c.isProhibited())
                 c.setOccur(BooleanClause.Occur.MUST);
         }
@@ -74,7 +74,7 @@
             // unless it's prohibited (that means we leave -a OR b but +a OR b-->a OR b)
             // notice if the input is a OR b, first term is parsed as required; without
             // this modification a OR b would parsed as +a OR b
-            BooleanClause c = (BooleanClause) clauses.elementAt(clauses.size()-1);
+            BooleanClause c = (BooleanClause) clauses.get(clauses.size()-1);
             if (!c.isProhibited())
                 c.setOccur(BooleanClause.Occur.SHOULD);
         }
@@ -100,9 +100,9 @@
             required = (!prohibited && conj != CONJ_OR);
         }
         if (required && !prohibited) {
-            clauses.addElement(new BooleanClause(q, BooleanClause.Occur.MUST));
+            clauses.add(new BooleanClause(q, BooleanClause.Occur.MUST));
         } else if (!required && !prohibited) {
-            clauses.addElement(new BooleanClause(q, BooleanClause.Occur.SHOULD));
+            clauses.add(new BooleanClause(q, BooleanClause.Occur.SHOULD));
         } else if (required && prohibited) {
             throw new RuntimeException("Clause cannot be both required and prohibited");
         }

Added: xml/xindice/trunk/lib/lucene-core-2.4.0.jar
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/lib/lucene-core-2.4.0.jar?rev=710170&view=auto
==============================================================================
Binary file - no diff available.

Propchange: xml/xindice/trunk/lib/lucene-core-2.4.0.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.