【问题标题】:Dynamics 365 SearchByTitleKbArticleRequest returns no recordsDynamics 365 SearchByTitleKbArticleRequest 不返回任何记录
【发布时间】:2017-12-14 04:08:10
【问题描述】:

我正在尝试从 Dynamics 365 在线实例中检索 kbarticle。我使用 SDK 示例提供的一个非常简单的查询,但它从不返回任何 kbarticle。

下面是代码:

 SearchByTitleKbArticleRequest searchByTitleRequest =
                    new SearchByTitleKbArticleRequest()
                    {
                        SubjectId = subjectId, // I have retrieved subjectid earlier. 
                        UseInflection = false,
                        SearchText = "My Article",
                        QueryExpression = new QueryExpression()
                        {
                            ColumnSet = new ColumnSet(true),
                            EntityName = "kbarticle" // I've tried knowledgearticle as well.
                        }
                    };

var searchByTitleResponse = (SearchByTitleKbArticleResponse)
                    serviceProxy.Execute(searchByTitleRequest);

        // check success
        var retrievedArticles = searchByTitleResponse.EntityCollection.Entities;                      
        Console . WriteLine ( "  Results of search (titles found):" + retrievedArticles.Count ); // It is always 0
        foreach ( var article in retrievedArticles )
            Console . WriteLine ( article .Id );
  1. 在新版SDK中,kbarticle更名为knowledgearticle。我尝试过使用知识文章,但没有成功。
  2. 与 CRM Online 实例的连接也是正确的,我可以使用 RetrieveMultiple 服务运行其他查询。
  3. 文章已发布,我也有权访问该文章。
  4. 我能够使用 REST 和 RetrieveMultiple 检索同一篇文章,因此我在文章或我的连接中看不到任何问题。

谁能指出正确的方向以使此消息有效?

【问题讨论】:

  • 您是否尝试过 UseInflection=true 和一些文章正文进行搜索?如果没有错,您当前的过滤器将搜索确切的标题..
  • 你好 Arun,我使用了 UseInflection=false。并且文章正文中有文字。我尝试了其他 SDK 消息,例如 SearchByKeyword 或 FullTextSearch。我已经尝试了所有可能/不同的组合。

标签: dynamics-crm dynamics-365 knowledge-management


【解决方案1】:

这取决于您使用的是哪个实体,下面我将给出 KnowledgeArticle 的示例。

Search knowledge articles using full-text search称,知识文章已全文索引,支持SQL Server全文搜索。

您可以使用FullTextSearchKnowledgeArticleRequest搜索文章。

var queryExpression = new QueryExpression("knowledgearticle")
{
    ColumnSet = new ColumnSet(true),
    PageInfo = new PagingInfo()
    {
        PageNumber = 1,
        Count = 5,
    }
};

FullTextSearchKnowledgeArticleRequest searchByTitleRequest =
        new FullTextSearchKnowledgeArticleRequest()
        {
            UseInflection = true,
            SearchText = "Error",
            RemoveDuplicates = false,
            StateCode = 0,
            QueryExpression = queryExpression
        };


var fullTextSearchKnowledgeArticleResponse = (FullTextSearchKnowledgeArticleResponse)
                   orgService.Execute(searchByTitleRequest);

// check success
var retrievedArticles = fullTextSearchKnowledgeArticleResponse.EntityCollection.Entities;
Console.WriteLine("Results of search (titles found):" + retrievedArticles.Count);
foreach (var article in retrievedArticles)
    Console.WriteLine(article.Id);

注意,在 SQL 上索引数据似乎需要一些时间,这可能不会返回使用 FullTextSearchKnowledgeArticleRequest 的新创建文章。

【讨论】:

  • 我尝试了所有消息,包括全文搜索,但没有运气。最后,我向 Microsoft 支持部门开了一张服务票,等待他们调查问题。
  • 以上方法你试过了吗?例如,如果我从 QueryExpression 中删除 PageInfo,我不会得到任何结果。在您的场景中,您使用哪个实体来创建文章,KnowledgeArticle 还是 KbArticle?
  • 当我今天尝试执行下面的示例时,它对我有用。值得一提的是,几天前我尝试了相同的消息,但我得到了 0 个结果,但这次成功了。但是,其他消息仍然不起作用。我还尝试了 QueryExpressions 的不同变体(使用单列选择、所有列等)。我什至尝试使用 QueryExpressions 的父类。我也尝试使用条件和过滤器。我同时使用了 kbarticle 和 Knowledgearticle,结果相同。
  • 问题是这些消息仅适用于文章实体而不适用于 kbarticle。
猜你喜欢
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 2019-09-20
  • 2019-03-28
  • 1970-01-01
  • 2020-09-15
  • 1970-01-01
相关资源
最近更新 更多