[pylucene-dev] [newbie] Must I recompile pyLucene to get my
Analyzer jar callable?
Andi Vajda
vajda at osafoundation.org
Sun Jun 1 23:09:44 PDT 2008
On Jun 1, 2008, at 10:53 PM, "Cloud Zhang" <zhong335 at gmail.com> wrote:
> Thank a lot for this very detailed guide, I'll forward this to
> Chinese Python community, since the first thing a Chinese developer
> looking for about Lucene is a tokenizer for Chinese and get stuck
> with importing a jar...
Isn't there a Chinese analyzer already shipped with Java Lucene in
contrib/analyzers ?
That contrib is already built into PyLucene.
Andi..
>
>
> On Mon, Jun 2, 2008 at 1:15 PM, Andi Vajda <vajda at osafoundation.org>
> wrote:
>
> On Mon, 2 Jun 2008, Cloud Zhang wrote:
>
> Adding an new analyzer (in jar form) in Java is really
> straightforward, but
> when I was trying to add one for pyLucene, I found no way to refer
> the jar
> package.
>
> I went though the building process of pyLucene and guess maybe I
> could:
> * put the analyzer source under
> PyLucene-2.3.2-1/lucene-java-2.3.2/contrib/analyzers/src/java/, and
> recompile Lucene then pyLucene
> or
> * put the analyzer jar somewhere in the building folder and add it
> to the
> Makefile, then recompile pyLucene
>
> Could them work? Or is there other solution which is as
> straightforward as
> setting CLASSPATH in java?
>
> To access your class(es) by name from Python, you must have JCC
> generate wrappers for it (them). This is what is done line 177 and
> on in PyLucene's Makefile. The easiest way for you to add your own
> Java classes to PyLucene is to create another jar file with your own
> analyzer classes and code and add it to the JCC invocation there.
>
> For example, the Makefile snippet in question currently says:
>
> GENERATE=$(JCC) $(foreach jar,$(JARS),--jar $(jar)) \
> --package java.lang java.lang.System \
> java.lang.Runtime \
> --package java.util \
> java.text.SimpleDateFormat \
> --package java.io java.io.StringReader \
> java.io.InputStreamReader \
> java.io.FileInputStream \
> --exclude org.apache.lucene.queryParser.Token \
> --exclude org.apache.lucene.queryParser.TokenMgrError \
> --exclude
> org.apache.lucene.queryParser.QueryParserTokenManager \
> --exclude org.apache.lucene.queryParser.ParseException \
> --python lucene \
> --mapping org.apache.lucene.document.Document 'get:(Ljava/
> lang/String;)Ljava/lang/String;' \
> --mapping java.util.Properties 'getProperty:(Ljava/lang/
> String;)Ljava/lang/String;' \
> --sequence org.apache.lucene.search.Hits 'length:()I' 'doc:
> (I)Lorg/apache/lucene/document/Document;' \
> --version $(LUCENE_VER) \
> --files $(NUM_FILES)
>
>
> change the first line to say:
>
> GENERATE=$(JCC) $(foreach jar,$(JARS),--jar $(jar)) --jar myjar.jar \
> ...
>
> and rebuild PyLucene. That should be all you need to do. Your jar
> file is going to be installed along with lucene's in the lucene egg
> and it is going to be put on lucene.CLASSPATH which you use with
> lucene.initVM().
>
> Your classes can be declared in any Java package you want. Just make
> sure that their names don't clash with other Lucene class names that
> you also need to use as the class namespace is flattened in PyLucene.
>
> For more information about JCC and its command line args see JCC's
> README file at [1].
>
> Andi..
>
> [1] http://svn.osafoundation.org/pylucene/trunk/jcc/jcc/README
> _______________________________________________
> pylucene-dev mailing list
> pylucene-dev at osafoundation.org
> http://lists.osafoundation.org/mailman/listinfo/pylucene-dev
>
>
>
> --
> Cheers,
> Cloud
> _______________________________________________
> pylucene-dev mailing list
> pylucene-dev at osafoundation.org
> http://lists.osafoundation.org/mailman/listinfo/pylucene-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osafoundation.org/pipermail/pylucene-dev/attachments/20080601/9e9b627f/attachment.htm
More information about the pylucene-dev
mailing list