SharePoint Basic Search Service 2010 API secondaryFileExtention字段不存在

时间:2014-01-28 21:57:30

标签: soap sharepoint-2010 sharepoint-search

我正在为SharePoint开发客户端,我正在实现2013和2010 SharePoint SearchServices。我在获取secondaryFileExtension字段时遇到问题。 低于我对2010年搜索服务的要求:

<QueryPacket Revision="1000">   
    <Query>     
        <Context> 
        <QueryText language="en-US" type="STRING">Audio SITE:"https://xxxxxxxxxxxxxxxxx.com/demo/testsp/Documents"
            </QueryText>    
       </Context>    
       <SupportedFormats Format="urn:Microsoft.Search.Response.Document.Document"/> 
       <Range> 
        <StartAt>1</StartAt> 
        <Count>30</Count>  
       </Range>   
       <EnableStemming>true</EnableStemming>
       <EnableSpellCheck>Suggest</EnableSpellCheck> 
       <IncludeSpecialTermsResults>true</IncludeSpecialTermsResults>     
       <IncludeRelevantResults>true</IncludeRelevantResults> 
       <ImplicitAndBehavior>true</ImplicitAndBehavior>     
       <TrimDuplicates>true</TrimDuplicates>
       <Properties>
          <Property name="Rank"/>
          <Property name="Title" />
          <Property name="Author"/>
          <Property name="Size" />
          <Property name="Path" />
          <Property name="Description" />
          <Property name="Write"/>
          <Property name="SiteName" />
          <Property name="HitHighlightedSummary"/>
          <Property name="HitHighlightedProperties"/>
          <Property name="ContentClass"/>
          <Property name="IsDocument"/>
          <Property name="FileExtension"/>
      </Properties>
    </Query>
</QueryPacket>

使用以下SOAP信封:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body>    
        <Query xmlns="urn:Microsoft.Search">
        <queryXml>THE XML GOES HERE!</queryXml>
        </Query> 
</soap:Body> 
</soap:Envelope>

我收到以下回复:

<Envelope>
    <Body>
        <QueryResponse>
            <QueryResult><ResponsePacket xmlns="ur…</QueryResult>
        </QueryResponse>
    </Body>
</Envelope>

QueryResult:

<Document>
    <Action>
        <LinkUrl fileExt="aspx">https://xxxxxxxxxxxxxxx…</LinkUrl>
    </Action>
    <Properties>
        <Property>
            <Name>Rank</Name>
            <Type>Int64</Type>
            <Value>67299882</Value>
        </Property>
        <Property>
            <Name>Title</Name>
            <Type>String</Type>
            <Value>Audio 2014-01-18 19_10</Value>
        </Property>
        <Property>
            <Name>Author</Name>
            <Type>Object</Type>
            <Value>Testsp</Value>
        </Property>
        <Property>
            <Name>Size</Name>
            <Type>Int64</Type>
           <Value>62327</Value>
        </Property>
        <Property>
            <Name>Path</Name>
            <Type>String</Type>
          <Value>https://xxxxxxxxxxxxxxxx.com/demo/testsp/Documents/Forms/DispForm.aspx?ID=1</Value>
        </Property>
        <Property>
            <Name>Write</Name>
            <Type>DateTime</Type>
            <Value>2014-01-19T02:53:05</Value>
        </Property>
        <Property>
            <Name>SiteName</Name>
            <Type>String</Type>
           <Value>https://xxxxxxxxxxxxxx…</Value>
        </Property>
        <Property>
            <Name>HitHighlightedSummary</Name>
            <Type>String</Type>
            <Value><c0>Audio</c0> 2014-01-18…</Value>
        </Property>
        <Property>
            <Name>HitHighlightedProperties</Name>
            <Type>String</Type>
            <Value><HHTitle><c0>Audio</c0> 2…</Value>
        </Property>
        <Property>
            <Name>ContentClass</Name>
            <Type>String</Type>
            <Value>STS_ListItem_DocumentLibr…</Value>
        </Property>
        <Property>
            <Name>IsDocument</Name>
            <Type>Boolean</Type>
            <Value>false</Value>
        </Property>
        <Property>
            <Name>FileExtension</Name>
            <Type>String</Type>
            <Value>ASPX</Value>
        </Property>
    </Properties>
</Document>

但是属性SecondaryFileExtention不存在(由于音频文件类型,它应该包含“acc”)。 action标记包含以下链接: https://xxxxxxxxxxxxxxx.com/demo/testsp/Documents/Forms/DispForm.aspx?ID=1 当我转到此链接时,我看到一个包含2个字段名称和标题的表单,我可以从中下载.acc文件。 使用SharePoint 2013 Search Service执行类似请求会返回pdf文件的以下属性:

<element m:type="SP.SimpleDataRow">
    <Cells>
    <element m:type="SP.KeyValue">
        <Key>Rank</Key>
        <Value>12.6491832733154</Value>
        <ValueType>Edm.Double</ValueType>
    </element>
    <element m:type="SP.KeyValue">
        <Key>DocId</Key>
        <Value>4458265</Value>
        <ValueType>Edm.Int64</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>WorkId</Key>
       <Value>4458265</Value>
       <ValueType>Edm.Int64</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>Title</Key>
       <Value>W9</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>Author</Key>
       <Value>Dmitry Ivahno;Test User1</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>Size</Key>
       <Value>162678</Value>
       <ValueType>Edm.Int64</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>Path</Key>
       <Value>https://xxxxxxxxxxxx.co…</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>Description</Key>
       <Value m:null="true"/>
       <ValueType>Null</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>Write</Key>
       <Value>2013-05-23T14:18:46.00000…</Value>
       <ValueType>Edm.DateTime</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>CollapsingStatus</Key>
       <Value>0</Value>
       <ValueType>Edm.Int64</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>HitHighlightedSummary</Key>
       <Value xml:space="preserve">Form    W-9 (Rev. Decembe…</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>HitHighlightedProperties</Key>
       <Value m:null="true"/>
       <ValueType>Null</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>contentclass</Key>
       <Value>STS_ListItem_DocumentLibr…</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>PictureThumbnailURL</Key>
       <Value m:null="true"/>
       <ValueType>Null</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>ServerRedirectedURL</Key>
       <Value m:null="true"/>
       <ValueType>Null</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>ServerRedirectedEmbedURL</Key>
       <Value m:null="true"/>
       <ValueType>Null</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>ServerRedirectedPreviewUR…</Key>
       <Value m:null="true"/>
       <ValueType>Null</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>FileExtension</Key>
       <Value>pdf</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>ContentTypeId</Key>
       <Value>0x010100FA0E9F7CB9E8B94DB…</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>ParentLink</Key>
       <Value>https://xxxxxxxxxxx.co…</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>ViewsLifeTime</Key>
       <Value>88</Value>
       <ValueType>Edm.Int64</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>ViewsRecent</Key>
       <Value>0</Value>
       <ValueType>Edm.Int64</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>SectionNames</Key>
       <Value/>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>SectionIndexes</Key>
       <Value/>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>SiteLogo</Key>
       <Value m:null="true"/>
       <ValueType>Null</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>SiteDescription</Key>
       <Value m:null="true"/>
       <ValueType>Null</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>deeplinks</Key>
       <Value m:null="true"/>
       <ValueType>Null</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>importance</Key>
       <Value>0</Value>
       <ValueType>Edm.Int64</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>SiteName</Key>
       <Value>https://xfa.sharepoint.co…</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>IsDocument</Key>
       <Value>true</Value>
       <ValueType>Edm.Boolean</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>LastModifiedTime</Key>
       <Value>2013-05-23T14:18:46.00000…</Value>
       <ValueType>Edm.DateTime</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>FileType</Key>
       <Value>pdf</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>IsContainer</Key>
       <Value>false</Value>
       <ValueType>Edm.Boolean</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>WebTemplate</Key>
       <Value m:null="true"/>
       <ValueType>Null</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>SecondaryFileExtension</Key>
       <Value>pdf</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>docaclmeta</Key>
       <Value m:null="true"/>
       <ValueType>Null</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>OriginalPath</Key>
       <Value>https://xfa.sharepoint.co…</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>PartitionId</Key>
       <Value>d4cd988f-8939-401f-82e9-8…</Value>
       <ValueType>Edm.Guid</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>UrlZone</Key>
       <Value>0</Value>
       <ValueType>Edm.Int32</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>AAMEnabledManagedProperti…</Key>
       <Value>AttachmentURI;deeplinks;D…</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>RenderTemplateId</Key>
       <Value>~sitecollection/_catalogs…</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>piSearchResultId</Key>
       <Value>0_1</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    </Cells>

我是否可以通过SharePoint 2010 Search API获得真正的文件扩展名?

1 个答案:

答案 0 :(得分:1)

在对搜索服务进行SharePoint 2010 SOAP调用时(使用SPServices),我遇到了类似的问题。我有两个自定义字段 - 一个子标题(单行文本)和一个文章类别(托管元数据) - 我需要在搜索结果中显示,而我所有回来的正是你列出的内容(Rank through File Extension) )。

这两个字段必须添加为&#34;托管属性&#34;可以回到搜索结果中 - 步骤在这里:http://technet.microsoft.com/en-us/library/ff621097(v=office.14).aspx(您虽然需要集中管理级访问)。

我的托管属性在那里后,我遇到了另一个障碍,因为虽然我可以看到可用于搜索的托管属性(使用FAST Search for SharePoint工具:http://fastforsharepoint.codeplex.com/),但他们没有显示在结果中,即使我把它们放在&lt; Properties&gt;中SOAP调用列表。

对此的解决方案实际上是在&lt; QueryText&gt;中指定带有我的subheader值的通配符。字段(注意&#34;#&#34;)...这似乎强制显示这两个字段(路径条件是可选的):

<QueryText language='en-US' type='STRING'>
    My Search Phrase SubHeader:# AND path:/PathTo/My/SPSite
</QueryText>

不确定这是否是设计或是否是&#34;功能&#34;在SharePoint中只返回字段是存在的和/或被请求的东西。

如果您有服务器级访问权限,那么可能会有更优雅的解决方案,但这对我有用。