2011-05-25 71 views
0

我有一个包含大约4000条数据的XML文档。这些数据将用于PHP环境中,并且是Web应用程序所需的。我想过使用“狮身人面像”(http://sphinxsearch.com/docs/2.0.1/xmlpipe2.html)索引数据,但想知道,还有什么其他更好的选择。索引XML文档/文件的最佳方法?

由于提前, 安迪

编辑:我不想写一个加载XML文件转换成如进口商脚本的MySQL数据库。它应该是这样的:加载文件到这个工具/程序/任何,然后它应该可以从PHP搜索。

+0

澄清:你不介意最终的结果是一个可搜索的MySQL数据库(这是狮身人面像如何工作),你只是想要一个简单的方法来让你的XML文件在没有定制的导入脚本的情况下被搜索? – jisaacstone 2011-05-25 15:03:05

+0

正是。所以它看起来像我将使用狮身人面像:) – ndee 2011-05-26 07:48:36

回答

3

如果您有4000个条目并且只需要一个条目,那么将读取整个文件直至找到您的条目。这可能会很长时间。你可能想使用像MySQL这样的数据库。


如果你想使你的XML文件搜索能力,你会拥有这些两个选项之一:

  1. 您解析整个文件到一个数组 或东西,可以是 快速搜索(将导致每次调用PHP 脚本的记忆很多 )
  2. 您在整个XML文件 迭代,寻找您想要的 条目(会更慢镜头然后 第一,因为你必须 看看它是否是你想要的条目每 时间,然后才能继续 搜索)。

由于性能原因,这些选项都不是真的可以接受的。如果你希望用户编辑XML文件,它会变得更加棘手,因为它们不是多线程保存(就像数据库一样)。

如果您想为您的搜索提供良好的性能,那么您需要使用数据库。就这么简单。另一件事是让用户机器解析XML文件(使用JavaScript)并获取所需文章的ID(然后从服务器打开)。但取决于XML文件的大小和用户机器的功能,浏览器可能会中断并取消脚本。

+0

我会编辑我的问题,使之更清晰,我正在寻找。我不想写一个导入脚本。它应该是“可搜索的”,而无需手动将条目加载到数据库中。 – ndee 2011-05-25 14:54:44

+0

也更新了我原来的帖子。 – 2011-05-25 16:15:13

2

我会第二个卢卡斯:不管你喜不喜欢,如果你期待任何一种表演,你不会逃避解析和规范化。

您将充分利用可导入xml或分析的xml(作为对象或json)并直接保存的ORM(SQL或NoSQL)。 (我敢肯定,Doctrine可以做这样的事情,也可以看看MongoDB和CoucheDB的NoSQL选项。)