Lucene pylucne中的BufferedReader

Lucene pylucne中的BufferedReader,lucene,pylucene,Lucene,Pylucene,我正在使用pylucne建立一个搜索系统。我正在使用TREC数据来测试我的系统。我已经成功地编写了索引器和搜索器代码。现在我想使用TREC主题来评估我的系统。为此,有一个名为的类从TREC格式的主题文件中读取查询。但是该类的readquerys(BufferedReader reader)需要一个BufferedReadertopics文件对象传递给它 如何在pylucene做到这一点。BufferedReader在pylucene JCC中不可用。在等待别人回答之后,我还在pylucene开发

我正在使用pylucne建立一个搜索系统。我正在使用TREC数据来测试我的系统。我已经成功地编写了索引器和搜索器代码。现在我想使用TREC主题来评估我的系统。为此,有一个名为的类从TREC格式的主题文件中读取查询。但是该类的
readquerys(BufferedReader reader)
需要一个
BufferedReader
topics文件对象传递给它


如何在pylucene做到这一点。BufferedReader在pylucene JCC中不可用。

在等待别人回答之后,我还在pylucene开发者邮件列表上问了这个问题。
安迪·瓦伊达回答说。我代表安迪回答这个问题

引用Andi:

在PyLucene Makefile中,找到jcc调用并将java.io.BufferedReader添加到长命令行中(不要忘记结尾\根据需要),然后重新生成PyLucene

更多信息:
在pyLucene的Makefile中,您会发现这一行
GENERATE=$(JCC)$(foreach-jar,$(JARS),--jar$(jar))\
。这里应该有一行代码,如
--package java.io
,添加要添加到JCC的类(BufferedReader),以便python代码可以使用它。
然后再次编译并安装pylucene。(您可以在PyLucene的文档中找到有关编译和安装的信息,也可以使用)

此外,要从文件中生成
BufferedReader
对象,您需要
FileReader
。所以再加上这个

仅适用于Completenes:添加此行后,我的
GENERATE
将如下所示:

GENERATE=$(JCC) $(foreach jar,$(JARS),--jar $(jar)) \
           $(JCCFLAGS) --use_full_names \
           --package java.lang java.lang.System \
                               java.lang.Runtime \
           --package java.util java.util.Arrays \
                               java.util.Collections \
                               java.util.HashMap \
                               java.util.HashSet \
                               java.util.TreeSet \
                               java.lang.IllegalStateException \
                               java.lang.IndexOutOfBoundsException \
                               java.util.NoSuchElementException \
                     java.text.SimpleDateFormat \
                     java.text.DecimalFormat \
                     java.text.Collator \
           --package java.util.concurrent java.util.concurrent.Executors \
           --package java.util.regex \
           --package java.io java.io.StringReader \
                             java.io.InputStreamReader \
                             java.io.FileInputStream \
                             java.io.BufferedReader \
                             java.io.FileReader \
           --exclude org.apache.lucene.sandbox.queries.regex.JakartaRegexpCapabilities \
           --exclude org.apache.regexp.RegexpTunnel \
           --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 java.util.AbstractList 'size:()I' 'get:(I)Ljava/lang/Object;' \
           org.apache.lucene.index.IndexWriter:getReader \
           --version $(LUCENE_VER) \
           --module python/collections.py \
           --module python/ICUNormalizer2Filter.py \
           --module python/ICUFoldingFilter.py \
           --module python/ICUTransformFilter.py \
           $(RESOURCES) \
           --files $(NUM_FILES)
这样做还不够,您还必须编译lucene基准库,默认情况下它不包括在安装库中,因为基准api中存在
TrecTopicsReader
。 要编译和安装基准测试,请执行以下操作: 您必须在主lucene文件夹中修改build.xml,其中存在基准文件夹,然后您必须在主Makefile中包含这个jar,以便将它作为egg安装到python LIB中

build.xml: 你必须做三次修改。为了简单起见,请遵循
jar测试框架
,如果有,请尝试为
jar基准
创建类似的模式

您必须做的三个更改是:

1)
将其替换为

2) 按规定

  <target name="jar" depends="jar-core,jar-test-framework"
          description="Jars core, codecs, test-framework, and all modules">
    <modules-crawl target="jar-core"/>
  </target>
生成文件: 在这里,您还必须进行三次修改。为了简单起见,请遵循
HIGHLIGHTER\u-JAR
并为
BENCHMARK\u-JAR
添加类似的规则。您必须进行的三项更改是:

1) 找到
JARS+=$(HIGHLIGHTER\u-JAR)
并以类似方式在其之后添加
JARS+=$(BENCHMARK\u-JAR)

2) 找到
HIGHLIGHTER\u JAR=$(LUCENE)/build/HIGHLIGHTER/LUCENE HIGHLIGHTER-$(LUCENE\u VER.JAR
,并以类似方式在此行后添加
BENCHMARK\u JAR=$(LUCENE)/build/BENCHMARK/LUCENE BENCHMARK-$(LUCENE\u VER.JAR

3) 找到规则
$(ANALYZERS\u-JAR):
,然后找到另一个规则
$(BENCHMARK\u-JAR):

$(BENCHMARK_JAR): $(LUCENE_JAR)
cd $(LUCENE)/benchmark; $(ANT) -Dversion=$(LUCENE_VER) compile
为了完整起见,这里是我的最终Mkaefile和build.xml文件

<target name="jar-benchmark">
    <ant dir="${common.dir}/benchmark" target="jar-core" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>
$(BENCHMARK_JAR): $(LUCENE_JAR)
cd $(LUCENE)/benchmark; $(ANT) -Dversion=$(LUCENE_VER) compile