You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by va...@apache.org on 2009/10/16 03:00:53 UTC
svn commit: r825722 - in /lucene/pylucene/trunk: jcc/_jcc/java/lang/
jcc/_jcc/java/util/ jcc/jcc/ jcc/jcc/sources/ samples/ test/
Author: vajda
Date: Fri Oct 16 01:00:52 2009
New Revision: 825722
URL: http://svn.apache.org/viewvc?rev=825722&view=rev
Log:
- added support for generics in Iterator and Enumeration instance iterators
- samples upgraded to Lucene 3.0.0 APIs
Modified:
lucene/pylucene/trunk/jcc/_jcc/java/lang/Class.cpp
lucene/pylucene/trunk/jcc/_jcc/java/util/Enumeration.cpp
lucene/pylucene/trunk/jcc/_jcc/java/util/Enumeration.h
lucene/pylucene/trunk/jcc/_jcc/java/util/Iterator.cpp
lucene/pylucene/trunk/jcc/_jcc/java/util/Iterator.h
lucene/pylucene/trunk/jcc/jcc/python.py
lucene/pylucene/trunk/jcc/jcc/sources/functions.h
lucene/pylucene/trunk/samples/IndexFiles.py
lucene/pylucene/trunk/samples/PorterStemmerAnalyzer.py
lucene/pylucene/trunk/samples/SearchFiles.py
lucene/pylucene/trunk/samples/TermPositionVector.py
lucene/pylucene/trunk/samples/ThreadIndexFiles.py
lucene/pylucene/trunk/samples/manindex.py
lucene/pylucene/trunk/samples/mansearch.py
lucene/pylucene/trunk/test/test_PythonDirectory.py
Modified: lucene/pylucene/trunk/jcc/_jcc/java/lang/Class.cpp
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/_jcc/java/lang/Class.cpp?rev=825722&r1=825721&r2=825722&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/_jcc/java/lang/Class.cpp (original)
+++ lucene/pylucene/trunk/jcc/_jcc/java/lang/Class.cpp Fri Oct 16 01:00:52 2009
@@ -346,6 +346,7 @@
DECLARE_TYPE(Class, t_Class, Object, java::lang::Class,
abstract_init, 0, 0, t_Class__fields_, 0, 0);
+#ifdef _java_generics
PyObject *t_Class::wrap_Object(const Class& object, PyTypeObject *T)
{
PyObject *obj = t_Class::wrap_Object(object);
@@ -356,7 +357,7 @@
}
return obj;
}
-
+#endif
static PyObject *t_Class_cast_(PyTypeObject *type, PyObject *arg)
{
if (!(arg = castCheck(arg, Class::initializeClass, 1)))
Modified: lucene/pylucene/trunk/jcc/_jcc/java/util/Enumeration.cpp
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/_jcc/java/util/Enumeration.cpp?rev=825722&r1=825721&r2=825722&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/_jcc/java/util/Enumeration.cpp (original)
+++ lucene/pylucene/trunk/jcc/_jcc/java/util/Enumeration.cpp Fri Oct 16 01:00:52 2009
@@ -78,6 +78,19 @@
DECLARE_TYPE(Enumeration, t_Enumeration, JObject,
java::util::Enumeration, abstract_init, 0, 0, 0, 0, 0);
+#ifdef _java_generics
+ PyObject *t_Enumeration::wrap_Object(const Enumeration& object,
+ PyTypeObject *T)
+ {
+ PyObject *obj = t_Enumeration::wrap_Object(object);
+ if (obj != Py_None)
+ {
+ t_Enumeration *self = (t_Enumeration *) obj;
+ self->parameters[0] = T;
+ }
+ return obj;
+ }
+#endif
static PyObject *t_Enumeration_hasMoreElements(t_Enumeration *self)
{
jboolean b;
Modified: lucene/pylucene/trunk/jcc/_jcc/java/util/Enumeration.h
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/_jcc/java/util/Enumeration.h?rev=825722&r1=825721&r2=825722&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/_jcc/java/util/Enumeration.h (original)
+++ lucene/pylucene/trunk/jcc/_jcc/java/util/Enumeration.h Fri Oct 16 01:00:52 2009
@@ -46,7 +46,18 @@
public:
PyObject_HEAD
Enumeration object;
+#ifdef _java_generics
+ PyTypeObject *parameters[1];
+ static PyTypeObject **parameters_(t_Enumeration *self)
+ {
+ return (PyTypeObject **) &(self->parameters);
+ }
+#endif
static PyObject *wrap_Object(const Enumeration& object);
+#ifdef _java_generics
+ static PyObject *wrap_Object(const Enumeration& object,
+ PyTypeObject *T);
+#endif
static PyObject *wrap_jobject(const jobject& object);
};
}
Modified: lucene/pylucene/trunk/jcc/_jcc/java/util/Iterator.cpp
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/_jcc/java/util/Iterator.cpp?rev=825722&r1=825721&r2=825722&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/_jcc/java/util/Iterator.cpp (original)
+++ lucene/pylucene/trunk/jcc/_jcc/java/util/Iterator.cpp Fri Oct 16 01:00:52 2009
@@ -80,6 +80,19 @@
DECLARE_TYPE(Iterator, t_Iterator, JObject, java::util::Iterator,
abstract_init, 0, 0, 0, 0, 0);
+#ifdef _java_generics
+ PyObject *t_Iterator::wrap_Object(const Iterator& object,
+ PyTypeObject *T)
+ {
+ PyObject *obj = t_Iterator::wrap_Object(object);
+ if (obj != Py_None)
+ {
+ t_Iterator *self = (t_Iterator *) obj;
+ self->parameters[0] = T;
+ }
+ return obj;
+ }
+#endif
static PyObject *t_Iterator_hasNext(t_Iterator *self)
{
jboolean b;
Modified: lucene/pylucene/trunk/jcc/_jcc/java/util/Iterator.h
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/_jcc/java/util/Iterator.h?rev=825722&r1=825721&r2=825722&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/_jcc/java/util/Iterator.h (original)
+++ lucene/pylucene/trunk/jcc/_jcc/java/util/Iterator.h Fri Oct 16 01:00:52 2009
@@ -46,7 +46,18 @@
public:
PyObject_HEAD
Iterator object;
+#ifdef _java_generics
+ PyTypeObject *parameters[1];
+ static PyTypeObject **parameters_(t_Iterator *self)
+ {
+ return (PyTypeObject **) &(self->parameters);
+ }
+#endif
static PyObject *wrap_Object(const Iterator& object);
+#ifdef _java_generics
+ static PyObject *wrap_Object(const Iterator& object,
+ PyTypeObject *T);
+#endif
static PyObject *wrap_jobject(const jobject& object);
};
}
Modified: lucene/pylucene/trunk/jcc/jcc/python.py
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/jcc/python.py?rev=825722&r1=825721&r2=825722&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/jcc/python.py (original)
+++ lucene/pylucene/trunk/jcc/jcc/python.py Fri Oct 16 01:00:52 2009
@@ -84,8 +84,8 @@
while cls.isArray():
cls = cls.getComponentType()
if cls.getTypeParameters():
- p0, sep, p1 = rpartition(typename(cls, current, False), '::')
- return ', &a%d, &p%d, %s%st_%s::parameters_' %(i, i, p0, sep, p1)
+ ns, sep, n = rpartition(typename(cls, current, False), '::')
+ return ', &a%d, &p%d, %s%st_%s::parameters_' %(i, i, ns, sep, n)
return ', &a%d' %(i)
return (''.join([signature(param) for param in params]),
@@ -198,10 +198,10 @@
elif returnType.getName() == 'java.lang.String':
return 'return JArray<jstring>(%s.this$).wrap();' %(value)
- p0, sep, p1 = rpartition(typename(returnType, cls, False), '::')
- return 'return JArray<jobject>(%s.this$).wrap(%s%st_%s::wrap_jobject);' %(value, p0, sep, p1)
+ ns, sep, n = rpartition(typename(returnType, cls, False), '::')
+ return 'return JArray<jobject>(%s.this$).wrap(%s%st_%s::wrap_jobject);' %(value, ns, sep, n)
- p0, sep, p1 = rpartition(typename(returnType, cls, False), '::')
+ ns, sep, n = rpartition(typename(returnType, cls, False), '::')
if genericRT is not None:
if ParameterizedType.instance_(genericRT):
genericRT = ParameterizedType.cast_(genericRT)
@@ -227,22 +227,22 @@
else:
break
else:
- return 'return %s%st_%s::wrap_Object(%s, %s);' %(p0, sep, p1, value, ', '.join(clsArgs))
+ return 'return %s%st_%s::wrap_Object(%s, %s);' %(ns, sep, n, value, ', '.join(clsArgs))
elif TypeVariable.instance_(genericRT):
gd = TypeVariable.cast_(genericRT).getGenericDeclaration()
i = 0
if Class.instance_(gd):
for clsParam in gd.getTypeParameters():
if genericRT == clsParam:
- return 'return self->parameters[%d] != NULL ? wrapType(self->parameters[%d], %s.this$) : %s%st_%s::wrap_Object(%s);' %(i, i, value, p0, sep, p1, value)
+ return 'return self->parameters[%d] != NULL ? wrapType(self->parameters[%d], %s.this$) : %s%st_%s::wrap_Object(%s);' %(i, i, value, ns, sep, n, value)
i += 1
elif Method.instance_(gd):
for clsParam in gd.getTypeParameters():
if genericRT == clsParam:
- return 'return p%d != NULL && p%d[0] != NULL ? wrapType(p%d[0], %s.this$) : %s%st_%s::wrap_Object(%s);' %(i, i, i, value, p0, sep, p1, value)
+ return 'return p%d != NULL && p%d[0] != NULL ? wrapType(p%d[0], %s.this$) : %s%st_%s::wrap_Object(%s);' %(i, i, i, value, ns, sep, n, value)
i += 1
- return 'return %s%st_%s::wrap_Object(%s);' %(p0, sep, p1, value)
+ return 'return %s%st_%s::wrap_Object(%s);' %(ns, sep, n, value)
def call(out, indent, cls, inCase, method, names, cardinality, isExtension,
@@ -797,6 +797,8 @@
if iteratorMethod:
if iteratorExt:
tp_iter = 'get_extension_iterator'
+ elif generics and clsParams:
+ tp_iter = '((PyObject *(*)(t_%s *)) get_generic_iterator<t_%s>)' %(names[-1], names[-1])
else:
tp_iter = '((PyObject *(*)(t_%s *)) get_iterator<t_%s>)' %(names[-1], names[-1])
tp_iternext = '0'
@@ -806,6 +808,8 @@
ns, sep, n = rpartition(returnName, '::')
if nextExt:
tp_iternext = 'get_extension_next'
+ elif generics and clsParams:
+ tp_iternext = '((PyObject *(*)(java::util::t_Iterator *)) get_generic_iterator_next<java::util::t_Iterator,%s%st_%s,%s>)' %(ns, sep, n, returnName)
else:
tp_iternext = '((PyObject *(*)(java::util::t_Iterator *)) get_iterator_next<java::util::t_Iterator,%s%st_%s,%s>)' %(ns, sep, n, returnName)
elif nextElementMethod and enumeration.isAssignableFrom(cls):
@@ -814,6 +818,8 @@
ns, sep, n = rpartition(returnName, '::')
if nextElementExt:
tp_iternext = 'get_extension_nextElement'
+ elif generics and clsParams:
+ tp_iternext = '((PyObject *(*)(java::util::t_Enumeration *)) get_generic_enumeration_next<java::util::t_Enumeration,%s%st_%s,%s>)' %(ns, sep, n, returnName)
else:
tp_iternext = '((PyObject *(*)(java::util::t_Enumeration *)) get_enumeration_next<java::util::t_Enumeration,%s%st_%s,%s>)' %(ns, sep, n, returnName)
elif nextMethod:
@@ -822,6 +828,8 @@
ns, sep, n = rpartition(returnName, '::')
if nextExt:
tp_iternext = 'get_extension_next'
+ elif generics and clsParams:
+ tp_iternext = '((PyObject *(*)(t_%s *)) get_generic_next<t_%s,%s%st_%s,%s>)' %(names[-1], names[-1], ns, sep, n, returnName)
else:
tp_iternext = '((PyObject *(*)(t_%s *)) get_next<t_%s,%s%st_%s,%s>)' %(names[-1], names[-1], ns, sep, n, returnName)
else:
Modified: lucene/pylucene/trunk/jcc/jcc/sources/functions.h
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/jcc/sources/functions.h?rev=825722&r1=825721&r2=825722&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/jcc/sources/functions.h (original)
+++ lucene/pylucene/trunk/jcc/jcc/sources/functions.h Fri Oct 16 01:00:52 2009
@@ -102,6 +102,17 @@
return java::util::t_Iterator::wrap_Object(iterator);
}
+#ifdef _java_generics
+template<class T> PyObject *get_generic_iterator(T *self)
+{
+ java::util::Iterator iterator((jobject) NULL);
+ PyTypeObject *param = self->parameters ? self->parameters[0] : NULL;
+
+ OBJ_CALL(iterator = self->object.iterator());
+ return java::util::t_Iterator::wrap_Object(iterator, param);
+}
+#endif
+
template<class T, class U, class V> PyObject *get_iterator_next(T *self)
{
jboolean hasNext;
@@ -123,6 +134,34 @@
return U::wrap_Object(next);
}
+#ifdef _java_generics
+template<class T, class U, class V> PyObject *get_generic_iterator_next(T *self)
+{
+ jboolean hasNext;
+
+ OBJ_CALL(hasNext = self->object.hasNext());
+ if (!hasNext)
+ {
+ PyErr_SetNone(PyExc_StopIteration);
+ return NULL;
+ }
+
+ V next((jobject) NULL);
+ OBJ_CALL(next = self->object.next());
+
+ jclass cls = java::lang::String::initializeClass();
+ if (env->get_vm_env()->IsInstanceOf(next.this$, cls))
+ return env->fromJString((jstring) next.this$);
+
+ PyTypeObject *param = self->parameters ? self->parameters[0] : NULL;
+
+ if (param != NULL)
+ return wrapType(param, next.this$);
+
+ return U::wrap_Object(next);
+}
+#endif
+
template<class T, class U, class V> PyObject *get_enumeration_next(T *self)
{
jboolean hasMoreElements;
@@ -144,6 +183,34 @@
return U::wrap_Object(next);
}
+#ifdef _java_generics
+template<class T, class U, class V> PyObject *get_generic_enumeration_next(T *self)
+{
+ jboolean hasMoreElements;
+
+ OBJ_CALL(hasMoreElements = self->object.hasMoreElements());
+ if (!hasMoreElements)
+ {
+ PyErr_SetNone(PyExc_StopIteration);
+ return NULL;
+ }
+
+ V next((jobject) NULL);
+ OBJ_CALL(next = self->object.nextElement());
+
+ jclass cls = java::lang::String::initializeClass();
+ if (env->get_vm_env()->IsInstanceOf(next.this$, cls))
+ return env->fromJString((jstring) next.this$);
+
+ PyTypeObject *param = self->parameters ? self->parameters[0] : NULL;
+
+ if (param != NULL)
+ return wrapType(param, next.this$);
+
+ return U::wrap_Object(next);
+}
+#endif
+
template<class T, class U, class V> PyObject *get_next(T *self)
{
V next((jobject) NULL);
@@ -162,6 +229,31 @@
return U::wrap_Object(next);
}
+#ifdef _java_generics
+template<class T, class U, class V> PyObject *get_generic_next(T *self)
+{
+ V next((jobject) NULL);
+
+ OBJ_CALL(next = self->object.next());
+ if (!next)
+ {
+ PyErr_SetNone(PyExc_StopIteration);
+ return NULL;
+ }
+
+ jclass cls = java::lang::String::initializeClass();
+ if (env->get_vm_env()->IsInstanceOf(next.this$, cls))
+ return env->fromJString((jstring) next.this$);
+
+ PyTypeObject *param = self->parameters ? self->parameters[0] : NULL;
+
+ if (param != NULL)
+ return wrapType(param, next.this$);
+
+ return U::wrap_Object(next);
+}
+#endif
+
PyObject *get_extension_iterator(PyObject *self);
PyObject *get_extension_next(PyObject *self);
PyObject *get_extension_nextElement(PyObject *self);
Modified: lucene/pylucene/trunk/samples/IndexFiles.py
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/samples/IndexFiles.py?rev=825722&r1=825721&r2=825722&view=diff
==============================================================================
--- lucene/pylucene/trunk/samples/IndexFiles.py (original)
+++ lucene/pylucene/trunk/samples/IndexFiles.py Fri Oct 16 01:00:52 2009
@@ -30,8 +30,9 @@
if not os.path.exists(storeDir):
os.mkdir(storeDir)
- store = lucene.FSDirectory.getDirectory(storeDir, True)
- writer = lucene.IndexWriter(store, analyzer, True)
+ store = lucene.SimpleFSDirectory(lucene.File(storeDir))
+ writer = lucene.IndexWriter(store, analyzer, True,
+ lucene.IndexWriter.MaxFieldLength.LIMITED)
writer.setMaxFieldLength(1048576)
self.indexDocs(root, writer)
ticker = Ticker()
@@ -56,14 +57,14 @@
doc = lucene.Document()
doc.add(lucene.Field("name", filename,
lucene.Field.Store.YES,
- lucene.Field.Index.UN_TOKENIZED))
+ lucene.Field.Index.NOT_ANALYZED))
doc.add(lucene.Field("path", path,
lucene.Field.Store.YES,
- lucene.Field.Index.UN_TOKENIZED))
+ lucene.Field.Index.NOT_ANALYZED))
if len(contents) > 0:
doc.add(lucene.Field("contents", contents,
lucene.Field.Store.NO,
- lucene.Field.Index.TOKENIZED))
+ lucene.Field.Index.ANALYZED))
else:
print "warning: no content in %s" % filename
writer.addDocument(doc)
@@ -74,7 +75,7 @@
if len(sys.argv) < 2:
print IndexFiles.__doc__
sys.exit(1)
- lucene.initVM(lucene.CLASSPATH)
+ lucene.initVM()
print 'lucene', lucene.VERSION
start = datetime.now()
try:
Modified: lucene/pylucene/trunk/samples/PorterStemmerAnalyzer.py
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/samples/PorterStemmerAnalyzer.py?rev=825722&r1=825721&r2=825722&view=diff
==============================================================================
--- lucene/pylucene/trunk/samples/PorterStemmerAnalyzer.py (original)
+++ lucene/pylucene/trunk/samples/PorterStemmerAnalyzer.py Fri Oct 16 01:00:52 2009
@@ -49,7 +49,7 @@
if len(sys.argv) < 2:
print IndexFiles.__doc__
sys.exit(1)
- initVM(CLASSPATH)
+ initVM()
print 'lucene', VERSION
start = datetime.now()
try:
Modified: lucene/pylucene/trunk/samples/SearchFiles.py
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/samples/SearchFiles.py?rev=825722&r1=825721&r2=825722&view=diff
==============================================================================
--- lucene/pylucene/trunk/samples/SearchFiles.py (original)
+++ lucene/pylucene/trunk/samples/SearchFiles.py Fri Oct 16 01:00:52 2009
@@ -1,7 +1,7 @@
#!/usr/bin/env python
from lucene import \
- QueryParser, IndexSearcher, StandardAnalyzer, FSDirectory, Hit, \
- VERSION, initVM, CLASSPATH
+ QueryParser, IndexSearcher, StandardAnalyzer, SimpleFSDirectory, File, \
+ VERSION, initVM
"""
@@ -24,20 +24,20 @@
print
print "Searching for:", command
query = QueryParser("contents", analyzer).parse(command)
- hits = searcher.search(query)
- print "%s total matching documents." % hits.length()
+ scoreDocs = searcher.search(query, 50).scoreDocs
+ print "%s total matching documents." % len(scoreDocs)
- for hit in hits:
- doc = Hit.cast_(hit).getDocument()
+ for scoreDoc in scoreDocs:
+ doc = searcher.doc(scoreDoc.doc)
print 'path:', doc.get("path"), 'name:', doc.get("name")
if __name__ == '__main__':
STORE_DIR = "index"
- initVM(CLASSPATH)
+ initVM()
print 'lucene', VERSION
- directory = FSDirectory.getDirectory(STORE_DIR, False)
- searcher = IndexSearcher(directory)
+ directory = SimpleFSDirectory(File(STORE_DIR))
+ searcher = IndexSearcher(directory, True)
analyzer = StandardAnalyzer()
run(searcher, analyzer)
searcher.close()
Modified: lucene/pylucene/trunk/samples/TermPositionVector.py
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/samples/TermPositionVector.py?rev=825722&r1=825721&r2=825722&view=diff
==============================================================================
--- lucene/pylucene/trunk/samples/TermPositionVector.py (original)
+++ lucene/pylucene/trunk/samples/TermPositionVector.py Fri Oct 16 01:00:52 2009
@@ -1,24 +1,25 @@
from lucene import \
StandardAnalyzer, RAMDirectory, Document, Field, \
- IndexWriter, IndexReader, TermPositionVector, initVM, CLASSPATH
+ IndexWriter, IndexReader, TermPositionVector, initVM
if __name__ == '__main__':
- initVM(CLASSPATH)
+ initVM()
directory = RAMDirectory()
-iwriter = IndexWriter(directory, StandardAnalyzer(), True)
+iwriter = IndexWriter(directory, StandardAnalyzer(), True,
+ IndexWriter.MaxFieldLength.LIMITED)
ts = ["this bernhard is the text to be index text",
"this claudia is the text to be index"]
for t in ts:
doc = Document()
doc.add(Field("fieldname", t,
- Field.Store.YES, Field.Index.TOKENIZED,
+ Field.Store.YES, Field.Index.ANALYZED,
Field.TermVector.WITH_POSITIONS_OFFSETS))
iwriter.addDocument(doc)
iwriter.optimize()
iwriter.close()
-ireader = IndexReader.open(directory)
+ireader = IndexReader.open(directory, True)
tpv = TermPositionVector.cast_(ireader.getTermFreqVector(0, 'fieldname'))
for (t,f,i) in zip(tpv.getTerms(),tpv.getTermFrequencies(),xrange(100000)):
Modified: lucene/pylucene/trunk/samples/ThreadIndexFiles.py
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/samples/ThreadIndexFiles.py?rev=825722&r1=825721&r2=825722&view=diff
==============================================================================
--- lucene/pylucene/trunk/samples/ThreadIndexFiles.py (original)
+++ lucene/pylucene/trunk/samples/ThreadIndexFiles.py Fri Oct 16 01:00:52 2009
@@ -15,8 +15,9 @@
# This sample illustrates how to use a thread with PyLucene
import sys, os, threading
+
from datetime import datetime
-from lucene import StandardAnalyzer, VERSION, initVM, CLASSPATH
+from lucene import StandardAnalyzer, VERSION, initVM
from IndexFiles import IndexFiles
@@ -24,7 +25,7 @@
if len(sys.argv) < 2:
print IndexFiles.__doc__
sys.exit(1)
- env=initVM(CLASSPATH)
+ env=initVM()
print 'lucene', VERSION
def fn():
Modified: lucene/pylucene/trunk/samples/manindex.py
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/samples/manindex.py?rev=825722&r1=825721&r2=825722&view=diff
==============================================================================
--- lucene/pylucene/trunk/samples/manindex.py (original)
+++ lucene/pylucene/trunk/samples/manindex.py Fri Oct 16 01:00:52 2009
@@ -21,7 +21,7 @@
import os, re, sys
from subprocess import *
from lucene import IndexWriter, StandardAnalyzer, Document, Field
-from lucene import initVM, CLASSPATH
+from lucene import SimpleFSDirectory, File, initVM
def indexDirectory(dir):
@@ -63,17 +63,17 @@
doc = Document()
doc.add(Field("command", command,
- Field.Store.YES, Field.Index.UN_TOKENIZED))
+ Field.Store.YES, Field.Index.NOT_ANALYZED))
doc.add(Field("section", section,
- Field.Store.YES, Field.Index.UN_TOKENIZED))
+ Field.Store.YES, Field.Index.NOT_ANALYZED))
doc.add(Field("name", name.strip(),
- Field.Store.YES, Field.Index.TOKENIZED))
+ Field.Store.YES, Field.Index.ANALYZED))
doc.add(Field("synopsis", synopsis.strip(),
- Field.Store.YES, Field.Index.TOKENIZED))
+ Field.Store.YES, Field.Index.ANALYZED))
doc.add(Field("keywords", ' '.join((command, name, synopsis, description)),
- Field.Store.NO, Field.Index.TOKENIZED))
+ Field.Store.NO, Field.Index.ANALYZED))
doc.add(Field("filename", os.path.abspath(path),
- Field.Store.YES, Field.Index.UN_TOKENIZED))
+ Field.Store.YES, Field.Index.NOT_ANALYZED))
writer.addDocument(doc)
@@ -84,9 +84,11 @@
print "Usage: python manindex.py <index dir>"
else:
- initVM(CLASSPATH)
+ initVM()
indexDir = sys.argv[1]
- writer = IndexWriter(indexDir, StandardAnalyzer(), True)
+ writer = IndexWriter(SimpleFSDirectory(File(indexDir)),
+ StandardAnalyzer(), True,
+ IndexWriter.MaxFieldLength.LIMITED)
manpath = os.environ.get('MANPATH', '/usr/share/man').split(os.pathsep)
for dir in manpath:
print "Crawling", dir
Modified: lucene/pylucene/trunk/samples/mansearch.py
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/samples/mansearch.py?rev=825722&r1=825721&r2=825722&view=diff
==============================================================================
--- lucene/pylucene/trunk/samples/mansearch.py (original)
+++ lucene/pylucene/trunk/samples/mansearch.py Fri Oct 16 01:00:52 2009
@@ -28,11 +28,11 @@
from getopt import getopt, GetoptError
from lucene import \
- Document, IndexSearcher, FSDirectory, QueryParser, StandardAnalyzer, \
- Hit, Field, initVM, CLASSPATH
+ Document, IndexSearcher, SimpleFSDirectory, File, QueryParser, \
+ StandardAnalyzer, initVM
if __name__ == '__main__':
- initVM(CLASSPATH)
+ initVM()
def usage():
print sys.argv[0], "[--format=<format string>] [--index=<index dir>] [--stats] <query...>"
@@ -62,20 +62,20 @@
template = CustomTemplate(format)
-fsDir = FSDirectory.getDirectory(indexDir, False)
-searcher = IndexSearcher(fsDir)
+fsDir = SimpleFSDirectory(File(indexDir))
+searcher = IndexSearcher(fsDir, True)
parser = QueryParser("keywords", StandardAnalyzer())
parser.setDefaultOperator(QueryParser.Operator.AND)
query = parser.parse(' '.join(args))
start = datetime.now()
-hits = searcher.search(query)
+scoreDocs = searcher.search(query, 50).scoreDocs
duration = datetime.now() - start
if stats:
- print >> sys.stderr, "Found %d document(s) (in %s) that matched query '%s':" %(len(hits), duration, query)
+ print >>sys.stderr, "Found %d document(s) (in %s) that matched query '%s':" %(len(scoreDocs), duration, query)
-for hit in hits:
- doc = Hit.cast_(hit).getDocument()
+for scoreDoc in scoreDocs:
+ doc = searcher.doc(scoreDoc.doc)
table = dict((field.name(), field.stringValue())
- for field in (Field.cast_(f) for f in doc.getFields()))
+ for field in doc.getFields())
print template.substitute(table)
Modified: lucene/pylucene/trunk/test/test_PythonDirectory.py
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/test/test_PythonDirectory.py?rev=825722&r1=825721&r2=825722&view=diff
==============================================================================
--- lucene/pylucene/trunk/test/test_PythonDirectory.py (original)
+++ lucene/pylucene/trunk/test/test_PythonDirectory.py Fri Oct 16 01:00:52 2009
@@ -55,6 +55,7 @@
def __init__(self, name, path, lock):
super(PythonDirLock, self).__init__()
+
self.name = name
self.lock_file = path
self.lock = lock