python - 使用 Python : best practices, 优缺点全文搜索 XML 数据

标签 python xml search xpath full-text-search

任务

我想使用 Python 对 XML 数据进行全文搜索。

示例数据

<elements>
  <elem id="1">some element</elem>
  <elem id="2">some other element</elem>
  <elem id="3">some element
    <nested id="1">
    other nested element
    </nested>
  </elem>
</elements>

基本功能

我想要的最基本的功能是在 XPath(“/elements/elem”)中搜索“other”至少匹配元素的 ID 属性值(elem 2) 和嵌套元素 (elem 3, nested 1) 或匹配的 XPath。

理想的功能

解决方案应该灵活且可扩展。我正在寻找这些功能的可能组合:

  • 搜索嵌套元素(无限深度)
  • 搜索属性
  • 搜索句子和段落
  • 使用通配符搜索
  • 使用模糊匹配进行搜索
  • 返回精准匹配信息
  • 大型 XML 文件的良好搜索速度

问题

我不期望一个具有所有理想功能的解决方案,我必须结合不同的现有功能并自己编写其余部分。但首先,我想更多地了解那里有什么,您通常会使用哪些库和方法,它们的优缺点是什么。

编辑:感谢到目前为止的回答,我添加了详细信息并开始赏金

最佳答案

不确定这是否足以满足您的需求,但是 lxml支持 regular expressions in xpath (意思是:你可以使用 xpath 1.0 加上 EXSLT extension functions for regular expressions )

与后来添加的功能列表相比:

  • 搜索嵌套元素(无限深度):是
  • 搜索属性:是
  • 搜索句子和段落:没有。假设“段落”是实际的 xml 元素,那么是的。但是“句子”本身,不是。
  • 使用通配符搜索:是(正则表达式)
  • 使用模糊匹配进行搜索:否(假设使用词干提取、同义词等...)
  • 返回精准匹配信息:是
  • 大型 XML 文件的良好搜索速度:是的,除非您的文件非常大,以至于您实际上需要全文索引才能获得良好的速度。

我看到满足您所有请求的唯一方法是将您的文件加载到支持“真正的”全文搜索(可能通过 XQuery Fulltext)的 native xml 数据库中并使用它。 (不能进一步帮助你,也许 Sedna ,它似乎有一个 python API 并且似乎支持全文搜索?)

关于python - 使用 Python : best practices, 优缺点全文搜索 XML 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5790943/

相关文章:

python - 定义 args 时发生错误

xml - XSLT - 如何选择顶部 a 到顶部 b

python - 在python中获取所有属性XML并将其放入字典

python - 我可以使用 nltk 使用维基百科的内容构建答案引擎吗

algorithm - 寻找搜索算法名称

Python 前置的加等于运算符

python - 分块读取 Pandas 中的多个 CSV 文件

python - 如何在 Pandas 数据框单元格中提取部分字符串并在其中创建一个包含该字符串的新列

c++ - 添加子子节点以 boost ptree

java - 搜索列表中与 id 有关的最后一个值