首页 文章

并排使用SharePoint的企业搜索Web服务(search.asmx)和客户端对象模型 - 不同的文档 Headers

提问于
浏览
2

我正在开发一个Silverlight应用程序,该应用程序要求允许用户对文档库中的文档进行全文搜索,我正在使用search.asmx Web服务 . 此外,允许用户通过某些元数据约束进行搜索 . 例如,每个文档的列表条目中都有一个“语言”字段 . 我通过在文档库上运行递归Caml查询来完成此任务 .

不幸的是,我遇到了一个问题:search.asmx文件返回的文档的 Headers 是实际文档的 Headers ,其中客户端对象模型返回的文档的 Headers 是“ Headers “存储在SharePoint列表中的字段 . 有没有办法让客户端对象模型返回文档的真实 Headers ,或从sharepoint企业搜索Web服务中获取所有返回文档“ Headers ”字段的值?我已经搜索过,但还没找到办法做到这一点 .

谢谢 .

search.asmx web服务查询包示例:

<QueryPacket>
    <Query>
     <Context>
        <QueryText type='MSSQLFT'>
            SELECT Name, Title, Path, Description, Write, Rank, Size FROM SCOPE() WHERE FREETEXT('something') AND CONTAINS(Path,'http://localhost/Lists/DocLibrary')
        </QueryText>
     </Context>
    </Query>
</QueryPacket>

客户端对象模型CamlQuery示例:

<View Scope="Recursive">
  <Query>
    <Where>
      <Eq>
        <FieldRef Name="Language" />
        <Value Type="Text">English</Value>
      </Eq>
    </Where>
  </Query>
</View>

1 回答

  • 0

    我认为最简单的方法是让客户端对象模型返回真正的“ Headers ”字段 .

    我认为您的问题来自于SharePoint中的列有许多名称 . 一些用于UI(显示名称),一些是内部(内部名称) . 当您执行SPQuery时,如果要确保获得正确的SPQuery,则必须使用列的内部名称(内部名称是唯一的,显示名称不是) . search.asmx Web服务将使用一个值,但SPQuery将使用另一个值 .

    “ Headers ”列,正如您所发现的,“ Headers ”是SharePoint列表中“ Headers ”列的内部名称 . 如果要获取另一个字段,则需要查找其内部名称 .

    我建议你下载并使用SharePoint Manager . 它确实你会得到你期望的结果.'s a visual representation of the client object model. In this case, you can navigate to your document library, point to the field that you would like to get in your SPQuery and look at the 1255571 value for it. Do your SPQuery with that value if your FieldRef and i'

相关问题