如何解决从 sqlite Foxit SDK FullTextSearch 中检索结果
我正在 Xamarin.Android 中尝试使用 Foxit Pdf Sdk 的 FullTextSearch 函数。 根据他们的文档,结果保存在 sqlite 中。 我在从 sqlite 检索结果时遇到问题,并且在 Foxit Sdk 中没有关于检索的文档。
这是我的代码。
int errCode = Library.Initialize(sn,key);
if (errCode != Constants.EErrSuccess)
return string.Empty;
var search = new FullTextSearch();
string dbPath = database;
search.SetDataBasePath(dbPath);
// Get document source information.
DocumentsSource source = new DocumentsSource(directory);
// Create a Pause callback object implemented by users to pause the updating process.
PauseUtil pause = new PauseUtil(30);
// Start to update the index of PDF files which receive from the source.
Progressive progressive = search.StartUpdateIndex(source,pause,false);
int state = Progressive.etoBeContinued;
while (state == Progressive.etoBeContinued)
{
state = progressive.Resume();
}
// Create a callback object which will be invoked when a matched one is found.
MySearchCallback searchCallback = new MySearchCallback();
// Search the specified keyword from the indexed data source.
bool isFinished = search.SearchOf(searchIndex,FullTextSearch.ERankHitCountASC,searchCallback);
解决方法
首先,我在 SearchCallBack 函数中创建了一个属性。
public List<DtoSearchResult> SearchResults { get; set; }
当覆盖 RetrieveSearchResult 正在处理时,我将结果添加到列表中
public override int RetrieveSearchResult(string filePath,int pageIndex,string matchResult,int matchStartTextIndex,int matchEndTextIndex)
{
try
{
DtoSearchResult result = new DtoSearchResult();
result.FilePath = filePath;
result.MatchResult = matchResult;
result.PageIndex = pageIndex;
SearchResults.Add(result);
return 0;
}
catch (System.Exception ex)
{
throw ex;
}
}
然后我从活动中调用了 SearchResults 属性。
searchCallback.SearchResults = new List<DataTransferObjects.DtoSearchResult>();
bool isFinished = search.SearchOf(searchIndex,FullTextSearch.ERankHitCountASC,searchCallback);
var result = searchCallback.SearchResults;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。