Windows Phone 7 上快速全文搜索

7

如何在Windows Phone 7上进行非常快速的全文搜索?

我知道有一些可以做到这一点的C库-有没有办法为此接口到C库?

除了答案中提到的数据库外,是否有适用于Windows Phone 7的具有全文搜索功能的数据库?我还发现RavenDB和FileDB,它们没有全文搜索。

是否有适用于全文搜索的.NET库选项?我找到了一个.NET版的Lucene项目, 需要端口来使用独立存储。还有使用Azure的端口, 但那不是我想要的。


你想搜索什么?你为什么要在设备上这样大量地搜索内容?你不可以把内容放在基于Web的服务器上,并从那里请求搜索数据吗?在具有处理能力和资源的机器上搜索大量数据应该会更快。 - Matt Lacey
依赖Web服务进行核心功能似乎很不错,直到手机信号不稳定。你用过真正好的全文搜索工具吗?它们不需要太多的CPU或内存使用,因为它们预先计算了倒排索引。只要索引适合移动设备,性能应该比调用Web服务等待网络延迟要好得多。在我的情况下,Sphinx全文搜索引擎(C代码)仅需要7M的磁盘空间来处理我的数据集。 - Greg Weber
2个回答

3

在大多数应用程序中,最好将文档存储在服务器上,并使用 Web 服务在服务器端执行全文搜索。手机的处理能力、存储空间和 IO 速度非常有限,因此除非您使用非常小的数据集,否则可能很快耗尽设备上可用的资源。

话虽如此,目前似乎没有任何现有的Windows Phone数据库解决方案支持全文搜索。 Sterling数据库引擎是其中较受欢迎的选项之一,具有许多标准数据库功能,但就目前而言,它不支持全文搜索Rapid Repositorysiaqodb是其他选择,但它们目前也不支持全文搜索。有人将SQLite移植到Windows Phone 7,但它基于csharp-sqlite项目,该项目不支持SQLITE_ENABLE_FTS3编译器选项,该选项是全文搜索所必需的。下一个Windows Phone发布版本代号Mango将为开发人员提供访问Microsoft SQL Server Compact版的权限,但这也不支持全文搜索

我相信你唯一的选择是采用像Lucene.net这样的.NET托管全文搜索引擎,并尝试将其移植到Silverlight中运行。由于Silverlight只允许访问隔离存储而不是直接访问文件系统,因此您需要进行大量重构。此外,内存使用也有严格限制(每个应用程序最大90MB RAM使用量),这将再次限制您可以在手机上使用的数据集的大小。

非常感谢您对可能性的概述。 一个好的搜索工具的内存消耗应该至少可配置为远小于90MB。这样限制就在磁盘空间上,而不是内存上。 无论如何,我有一个相当大的数据集(7MB),不会增长。 通常全文搜索不需要太多资源,因为它使用预计算的倒排索引。 - Greg Weber
在这种情况下,你所需要的就是一个基于C#的倒排索引算法。或许可以看看这个问题是否有任何线索:https://dev59.com/iUvSa4cB1Zd3GeqPenhh - Greg Bray

2

太棒了,除了每个开发者许可证的395美元。对于一个可能无法赚回这笔钱的简单移动应用程序来说,这确实过于昂贵了。请注意,Perst在开源使用时是免费的。 - Greg Weber
是的,一开始没注意到...看起来有点陡峭。 - Webs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接