我想开发一个asp.net Web应用程序,它应该执行以下任务 a)用户应该能够向文档添加内容。要添加的内容可以包括文本以及图像,屏幕截图等。 b)用户应该能够根据一些关键词进行搜索。当使用关键字进行搜索时,应向用户显示适当的内容以及图像(如果有的话)。
我不确定应该采用什么方法。我认为一种方法是将文本内容存储在某个xml文件中,然后通过遍历xml的每个节点并显示来搜索关键字。但我不知道如何使用xml附加图像内容。如果时间文档大小增加很多,这种方法似乎并不好用和高效。
任何人请建议一些正确的方法来做上述要求。任何提示都将不胜感激。
答案 0 :(得分:0)
将其拆分为两个任务。编辑和搜索。
全文搜索解决了问题。只需使用Sphinx Search即可完成。 Sphinx易于使用,可以完成您需要的一切。它有MySQL接口(你的应用程序以与第二个MySQL数据库相同的方式连接到sphinx)。
编辑有点复杂。如果我理解正确,您希望多个用户同时编辑单个文档。
我建议使用websockets通知其他客户端文档中的更改。长轮询和服务器发送事件具有丑陋的副作用,例如阻止浏览器向服务器发出另一个请求。要在Javascript中实现客户端,我会使用React,Angular或类似的框架来尽可能简化更新。
服务器端需要对文档进行修改友好的表示,因此,如果一个用户更改了一个部件,而另一个用户更改了其他部件,则您的应用应该能够合并更改。更改完全不同的部分很容易,但更改相同的段落或文档节点可能会很棘手。每个更改的确切表示取决于文档的格式。
我没有看到使用XML而不是任何其他格式的好处。它对于文档表示可能是实用的,但它无法帮助合并碰撞的修改。我将从简单的字符串数组开始,每个字符串代表一个段落。一旦两个用户可以编辑同一段落,将其扩展为完整的XML文档就很容易了。
要以XML格式存储图像,只需使用散列作为文件名存储文件,然后使用此名称以XML格式链接文件。 Git做同样的事情并且效果很好。您可能需要计算引用以识别未使用的文件。