2011-05-31 60 views
7

如何在windows phone 7上快速全文檢索?在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,但那不是我正在尋找的。

+0

你想搜索什麼?您是否有理由在設備上以這種方式搜索大量內容?你能不能把內容放在基於網絡的服務器上,並從那裏請求搜索到的數據。它會(應該)在機器上搜索大量數據的速度要快得多,這些數據的處理能力和資源可用於這樣的任務。 – 2011-05-31 21:15:36

+0

依靠Web服務的核心功能似乎很棒,直到手機有片狀接收。你有沒有使用一個非常好的全文搜索工具?它們不需要太多的CPU或內存使用,因爲它們預先計算了倒排索引。只要索引適合移動設備,性能應該比等待網絡延遲呼叫Web服務好得多。在我的情況下,獅身人面像全文搜索引擎(C代碼)只需要7M的磁盤用於我的數據集。 – 2011-06-01 01:44:13

回答

2

從我可以告訴它出現珀斯允許全文索引搜索。不確定它正是你想要的,但檢查出來。

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

+0

太棒了,除了每個開發者許可證$ 395。對於一個簡單的移動應用程序來說真的太過分了,而這些應用程序可能不會賺回那些錢。請注意,Perst對於開放源代碼使用是免費的。 – 2011-06-01 02:24:51

+0

是的,起初沒有看到...似乎有點陡峭。 – Webs 2011-06-06 00:57:00

3

在大多數應用中這將是最好有存儲在服務器上的文件和使用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 Edition的訪問權限,但這也不支持full text searching

我相信你唯一的選擇就是採用.NET管理的全文搜索引擎,如Lucene.net,並嘗試將它移植到Silverlight中工作。您需要進行大量的重構,因爲Silverlight只允許訪問獨立存儲並且不能直接訪問文件系統。內存使用也有嚴格的限制(90MB max RAM usage per app),這也將限制您可以在手機上使用的數據集的大小。

+0

非常感謝您對可能性的概述。 好的搜索工具的內存消耗至少應該可配置爲遠低於90MB。然後限制將在磁盤空間上,而不是內存上。無論如何,我有一個不會增長的合理大小的數據集(7MB)。 全文搜索一般不佔用大量資源,因爲它使用預先計算的倒排索引。 – 2011-06-01 22:08:11

+0

在這種情況下,您只需要一個基於C#的倒排索引算法。也許看到這個問題是否有任何線索:http://stackoverflow.com/questions/2110142/writing-an-inverted-index-in-c-for-an-information-retrieval-application – 2011-06-01 22:27:28