PyLucene 索引器和检索器示例

2023-12-30

我是 Lucene 的新手。我想用Python 3编写PyLucene 6.5的示例代码。我改变了this http://graus.co/blog/pylucene-4-0-in-60-seconds-tutorial/该版本的示例代码。但是,我找不到几个文档,并且不确定更改是否正确。

# indexer.py
import sys
import lucene

from java.io import File
from org.apache.lucene.analysis.standard import StandardAnalyzer
from org.apache.lucene.document import Document, Field, StringField, FieldType
from org.apache.lucene.index import IndexWriter, IndexWriterConfig
from org.apache.lucene.store import SimpleFSDirectory, FSDirectory
from org.apache.lucene.util import Version

if __name__ == "__main__":
    lucene.initVM()
    indexPath = File("index/").toPath()
    indexDir = FSDirectory.open(indexPath)
    writerConfig = IndexWriterConfig(StandardAnalyzer())
    writer = IndexWriter(indexDir, writerConfig)

    print("%d docs in index" % writer.numDocs())
    print("Reading lines from sys.stdin...")

    tft = FieldType()
    tft.setStored(True)
    tft.setTokenized(True)
    for n, l in enumerate(sys.stdin):
        doc = Document()
        doc.add(Field("text", l, tft))
        writer.addDocument(doc)
    print("Indexed %d lines from stdin (%d docs in index)" % (n, writer.numDocs()))
    print("Closing index of %d docs..." % writer.numDocs())
    writer.close()

此代码读取输入并存储在index目录。

# retriever.py
import sys
import lucene

from java.io import File
from org.apache.lucene.analysis.standard import StandardAnalyzer
from org.apache.lucene.document import Document, Field
from org.apache.lucene.search import IndexSearcher
from org.apache.lucene.index import IndexReader, DirectoryReader
from org.apache.lucene.queryparser.classic import QueryParser
from org.apache.lucene.store import SimpleFSDirectory, FSDirectory
from org.apache.lucene.util import Version

if __name__ == "__main__":
    lucene.initVM()
    analyzer = StandardAnalyzer()
    indexPath = File("index/").toPath()
    indexDir = FSDirectory.open(indexPath)
    reader = DirectoryReader.open(indexDir)
    searcher = IndexSearcher(reader)

    query = QueryParser("text", analyzer).parse("hello")
    MAX = 1000
    hits = searcher.search(query, MAX)

    print("Found %d document(s) that matched query '%s':" % (hits.totalHits, query))
    for hit in hits.scoreDocs:
        print(hit.score, hit.doc, hit.toString())
        doc = searcher.doc(hit.doc)
        print(doc.get("text").encode("utf-8"))

我们应该能够检索(搜索)retriever.py但它不返回任何内容。它出什么问题了?


我认为您开始的最佳方法是下载 PyLucene 的 tarball(您选择的版本):

https://www.apache.org/dist/lucene/pylucene/ https://www.apache.org/dist/lucene/pylucene/

在里面你会发现一个test3/文件夹(对于 python3,否则test2/对于 python2) 和 python 测试。这些涵盖了常见的操作,例如索引、阅读、搜索等等。鉴于 Pylucene 的文档严重缺乏,我发现这些非常有帮助。

结帐test_Pylucene.py尤其。

Note

如果变更日志对您来说不够直观,这也是快速掌握更改并跨版本调整代码的好方法。

(为什么我不在这个答案中提供代码:在 SO 的 PyLucene 答案上提供代码片段的问题是,一旦新版本发布,这些代码片段很快就会过时,正如我们在大多数现有版本中看到的那样。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyLucene 索引器和检索器示例 的相关文章

随机推荐

  • Spring Data JPA“无法找到 List [重复]

    这个问题在这里已经有答案了 很难弄清楚我是否遇到了错误或做了一些愚蠢的事情 Spring Boot v2 0 0 M7 spring data jpa spring data rest MySQL 以下 Query Query select
  • 如何退出 Google+ 帐户?

    在 Android 应用程序上注册 Google plus 后 我如何注销 以便可以使用另一个帐户登录 不知道是否GoogleAuthUtil invalidateToken是不是答案 Thanks 如果您正在使用Google 登录 htt
  • 给定一个 Java InputStream,我如何确定流中的当前偏移量?

    我想要一些通用的 可重复使用的东西getPosition 方法将告诉我从流的起点读取的字节数 理想情况下 我希望它能够与所有输入流一起使用 这样当我从不同的来源获取它们时 我就不必包装它们中的每一个 这样的野兽存在吗 如果没有 任何人都可以
  • Oracle sql 中的“show create table”等效项

    在 MySql 中 您可以使用以下命令查看表定义 列及其数据类型等 show create table table name oracle sql有类似的功能吗 如果您询问有关 SQL Plus 命令 show create table t
  • 使用 Bootstrap-Vue 时,如何防止单击嵌套 b-input 组件时关闭 b-dropdown?

    我很确定我只是不明白如何实现 Vue事件修饰符 https v2 vuejs org v2 guide events html Event Modifiers 根据该文档 我所要做的就是添加以下内容 a a 以下是我如何将示例解释为我的哈巴
  • Python 日志记录 - 根据名称确定级别号

    Python 日志记录级别可以使用以下方式注册logging addLevelName 有没有一种方法可以从级别名称获取Python日志编号 打电话后addLevelName 结果级别的处理方式与所有标准级别完全相同 gt gt gt im
  • 在多级逻辑回归中,SE 如何高于 1000? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 也许我的问题无法具体 但是当拟合 glme 模型 在 R 中使用 lme4 包 时 我得到其中一个参数 SE 1000 估计参数高达 16
  • 更改 UIPickerView 背景

    我想更改 UIPickerView 的边框颜色 我没有看到 UIPickerView 的色调属性 有什么办法可以做到这一点吗 或者解决方法 Thanks 您还可以屏蔽该组件 只需稍加修改 您就可以获取组件的大小并使用以下代码将其剪切出来 C
  • 使用遗传算法进行图像处理

    我想看看遗传算法在图像处理中的应用 我不知道如何为任何图像编写健身函数 假设我有一个灰度图像 它不是很清晰 现在如果我继续将生成的解决方案与该图片值匹配 那么我的解决方案会如何更好 例如更好的清晰度 增加的对比度 亮度等 我最喜欢的遗传算法
  • 为什么使用 setdefault() 创建的这个 Python 字典是乱序的?

    我刚刚开始使用 Python VBA 背景 为什么这本字典的创建顺序是乱的 不应该是a 1 b 2 等等吗 class Card def county self c 0 l 0 groupL groupL for Loop for n in
  • WordPress:更改管理子菜单顺序

    我已经创建并注册了一个管理页面作为 帖子 管理菜单下的子菜单 但问题是它出现在 wp 子菜单的末尾 即 标签 之后 如何更改此自定义管理页面子菜单条目的顺序以使其显示在 添加新项 之后 我正在使用此功能在 edit php 帖子菜单 下注册
  • postgresql连接2个表

    我有2个表tab1和tab2 tab2 tab1 id 引用tab1 id tab2 与 tab1 id 具有不同的值 我需要一个将 tab1 与 tab2 中的操作列连接起来的连接 以及 id 的最新值 tab1 id user file
  • Jquery 自动加载 gif 并在提交点击时禁用按钮

    是否可以自动显示 隐藏 ajax 加载 gif 并同时禁用 启用提交按钮 当提交按钮是样式化的而不是输入类型 提交时 目前 在提交时我这样做 save button id click function if save button id h
  • 运行时错误:对象不支持属性或方法

    我需要在一个相当大的项目中使用 jQuery 创建一个对话框 在某些地方 这个项目使用的 jquery 版本与我最近在窗口中使用的版本不同 我的代码如下所示 在 ascx 页面上
  • Autofac - 注册所有 Windows 窗体

    有没有办法让 Autofac 自动注册我的程序集中的所有 Windows 窗体 此功能很可能类似于 Autofac MVC 支持注册所有控制器的能力 现在 我这样做 foreach var type in Assembly GetExecu
  • 是否可以滚动 Treeview 的列内容,而不是 Tkinter 中的列窗口?

    我有一个带有 Treeview 小部件和一列的窗口 如果我添加足够的节点以使节点的文本超出窗口的宽度 则除非我更改 否则将无法水平滚动列宽使其比窗宽 这就是我的意思 我应该能够水平滚动 这样我就可以适应节点的文本 但水平滚动条被禁用 但是
  • 否定内部词法分析器和解析器规则

    否定元字符如何 在 ANTLR 的词法分析器和解析器规则中使用吗 否定可以发生在内部词法分析器和解析器规则 https stackoverflow com questions 4297770 practical difference bet
  • 如何存储不同类型的文档

    我有一个使用 SQL SERVER 2008 的网站 它允许用户上传 excel word txt pdf 媒体文件和其他格式的文件 就像Rapishare Megaupload 将它们存储到 SQL SERVER 中的最佳方法是什么 FI
  • Android Webview 锚链接(跳转链接)不起作用

    我的 Android 应用程序中有一个 WebView 它使用 loadDataWithBaseURL 方法加载 HTML 字符串 问题是本地锚链接 a href link 无法正常工作 单击链接时 它会突出显示 但不会滚动到相应的锚点 如
  • PyLucene 索引器和检索器示例

    我是 Lucene 的新手 我想用Python 3编写PyLucene 6 5的示例代码 我改变了this http graus co blog pylucene 4 0 in 60 seconds tutorial 该版本的示例代码 但是