【问题标题】:Retrieve result from sqlite Foxit SDK FullTextSearch从 sqlite Foxit SDK FullTextSearch 检索结果
【发布时间】:2021-07-07 11:21:28
【问题描述】:

我正在 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);

【问题讨论】:

    标签: xamarin.forms xamarin.android foxit foxit-reader


    【解决方案1】:

    首先我在 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 2011-08-30
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多