【问题标题】:fast full text search on windows phone 7windows phone 7 上的快速全文搜索
【发布时间】:2011-05-31 17:23:05
【问题描述】:

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

我知道可以做到这一点的 C 库 - 有什么方法可以与 C 库进行交互吗?

有没有提供全文搜索功能的 windows phone 7 数据库?除了答案中提到的数据库外,我还遇到过 RavenDB 和 FileDB,它们没有全文搜索。

是否有用于全文搜索的 .NET 库选项?我遇到了一个.NET port of the Lucene project,它必须是ported to use Isolated Storage。有a port that uses Azure,但这不是我要找的。​​p>

【问题讨论】:

  • 您要搜索什么?您是否有理由在设备上以这种方式搜索大量内容?您能否将内容放在基于 Web 的服务器上并从那里请求搜索到的数据。在具有可用于此类任务的处理能力和资源的机器上搜索大量数据会(应该)快得多。
  • 在手机接收不稳定之前,依靠 Web 服务实现核心功能似乎很棒。你用过一个非常好的全文搜索工具吗?它们不需要太多的 CPU 或内存使用,因为它们预先计算了倒排索引。只要索引适合移动设备,性能应该比等待网络延迟调用 Web 服务要好得多。就我而言,sphinx 全文搜索引擎(C 代码)只需要 7M 的磁盘来存储我的数据集。

标签: windows-phone-7


【解决方案1】:

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

话虽如此,Windows Phone 的现有数据库解决方案似乎都不支持全文搜索。 Sterling database engine 是许多标准database features 中较受欢迎的选项之一,但目前它不支持full text searchingRapid Repositorysiaqodb 是其他选项,但它们目前也不支持全文搜索。有人移植了SQLite to Windows Phone 7,但它是基于csharp-sqlite 项目的,它不支持Full Text Searching 所需的SQLITE_ENABLE_FTS3 编译器选项。名为 Mango 的下一个 Windows Phone 版本代码将为开发人员提供对 Microsoft SQL Server Compact 版本的访问权限,但这也不支持full text searching

我相信您唯一的选择是采用 .NET 托管的全文搜索引擎,例如 Lucene.net,并尝试将其移植到 Silverlight 中。您需要进行大量重构,因为 Silverlight 只允许访问独立存储,而不能直接访问文件系统。内存使用也有严格限制 (90MB max RAM usage per app),这同样会限制您可以在手机上使用的数据集的大小。

【讨论】:

  • 非常感谢您对可能性的概述。一个好的搜索工具的内存消耗至少应该可以配置为远小于 90MB。然后限制将在磁盘空间上,而不是内存上。无论如何,我有一个不会增长的合理大小的数据集(7MB)。全文搜索一般不会占用大量资源,因为它使用预先计算的倒排索引。
  • 在这种情况下,您只需要一个基于 C# 的倒排索引算法。也许看看这个问题是否有任何线索:stackoverflow.com/questions/2110142/…
【解决方案2】:

据我所知,Perst 似乎允许全文可索引搜索。不确定它是否正是您想要的,但请检查一下。

http://mobileworld.appamundi.com/blogs/andywigley/archive/2010/06/08/perst-a-database-for-windows-phone-7-silverlight-part-2.aspx

【讨论】:

  • 太棒了,除了每个开发者许可证 395 美元。对于一个可能无法赚回这笔钱的简单移动应用程序来说,这实在是太过分了。请注意,Perst 它是免费供开源使用的。
  • 是的,一开始没看到...好像有点陡峭。
猜你喜欢
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-14
  • 2012-03-17
  • 1970-01-01
  • 2023-04-10
  • 2012-09-13
相关资源
最近更新 更多