【问题标题】:Search relevance from XML docs (XQuery?) vs MySQL从 XML 文档(XQuery?)与 MySQL 搜索相关性
【发布时间】:2011-02-08 08:18:27
【问题描述】:

我有一个网站,其中文档保存在 xml 文档中,都具有相同的结构。

我需要一个搜索引擎,我可以在其中根据搜索用户给出的关键词选择相关性最高的文档。

我认为使用 XQuery 而不是将信息存储两次(在 XML docs + mysql 数据库中)并查询 mysql 数据库以进行相关性搜索可能是一个好主意。

XQuery 对此有什么好处吗?对于 +1000 个文档,每个文档大约 7kb,我可以期望什么速度?

感谢您的宝贵时间。

亲切的问候

【问题讨论】:

    标签: xml performance search-engine xquery relevance


    【解决方案1】:

    如果您有超过 1000 个文档在给定查询被搜索,那么使用 jQuery 或 SQL 数据库效率不高。

    1) 在每个文档中对每个关键字进行顺序搜索将得到不少于 # 个文档 * 每个文档中的单词 # 个 * 关键字 # 个

    2) 每次您进行搜索时,都必须再次扫描每个文档。如果你的项目涉及多次搜索,这是不可行的。

    3) 顺序搜索无法让您根据找到的单词数和文档中的总单词数以及每个单词的重要性等对结果进行排名...

    更好的选择是使用Inverted Index 数据结构提前“索引”您的文档和单词。

    这样,您可以预先做一些工作来为每个文档中的每个单词编制索引,但在进行实际搜索时会节省大量时间(这很重要)。

    另一个优点是您将能够以非临时方式对文档进行排名。请参阅Vector Space model

    【讨论】:

    • 可能意味着“XQuery”,而不是“jQuery”。希望我可以编辑这个,但我不能,因为字符变化小于 10。
    【解决方案2】:

    如果您想要 XML 文档的搜索解决方案(仅搜索而不是复杂的文档事务),那么我建议您使用 Apache - Lucene 搜索引擎。

    最新的 Apache Lucene 3.x 版本提供了血统搜索功能。

    最重要的是,您可以使用 Apache-Solr,它使用 lucene 作为搜索引擎,具有所有管理功能、分面浏览和有效负载。 (注意:Lucene 实现也适用于所有 .NET、Java、Python、Ruby 语言)。

    如果您想要一些真正基于 XQuery 且具有开源性质的解决方案 - 考虑到您的文档量,请尝试使用 eXist Xml 数据库。在 eXists 数据库中加载所有 Xml 文档,然后使用 XQuery。但是这种方法需要 -

    1. 将所有 Xml 文档提取到 eXists 数据库中
    2. 编写 XQuery 模块以将这些文档查询到 Xml 结果集中
    3. 直接从您的应用程序与那些 XQuery 模块对话以获得结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      • 1970-01-01
      • 2012-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多