我有一个网站,其中文档保存在xml文档中,所有文档都具有相同的结构。
我需要一个搜索引擎,我可以根据搜索用户提供的关键词选择具有最高相关性的文档。
我认为(?)使用XQuery是一个好主意,而不是将信息存储两次(在XML docs + mysql数据库中)并查询mysql数据库以进行相关性搜索。
XQuery对此有什么好处,以及如何以及在每个约7kb的+1000文档上可以达到的速度。
感谢您的时间。
亲切的问候
答案 0 :(得分:1)
如果您在给定查询时搜索了+1000个文档,则使用jQuery或SQL数据库效率不高。
1)对每个关键字进行每个文档的顺序搜索,不会少于文档数量*每个文档中的单词数量*关键字数量
2)每次进行搜索时,每个文档都必须再次扫描。如果您的项目涉及多次搜索,则这是不可行的。
3)顺序搜索无法根据找到的单词数量和文档中的单词总数,重要性或每个单词等对结果进行排名......
更好的选择是使用Inverted Index数据结构提前“索引”您的文档和文字。
通过这种方式,您可以预先做一些工作来索引每个文档中的每个单词,但是在进行实际搜索时(这是重要的),您将节省很多的时间。
另一个优点是您将能够以非临时方式对文档进行排名。请参阅Vector Space model。
答案 1 :(得分:0)
如果你想要一个XML文档的搜索解决方案(只搜索而不是复杂的文档事务),那么我会建议Apache - Lucene搜索引擎。
最新的Apache Lucene 3.x版本提供了下降搜索功能。
在顶部你可以使用使用lucene的Apache-Solr,因为搜索引擎具有所有管理功能,分面浏览和有效负载。 (注意:Lucene实现也适用于所有.NET,Java,Python,Ruby语言)。
如果你想要一些真正基于XQuery的解决方案和开源性质 - 考虑你的文档量,请尝试使用eXist Xml数据库。在eXists数据库中加载所有Xml文档,然后使用XQuery。但这种方法需要 -