2

I am developing a client for SharePoint and I am implementing both 2013 and 2010 SharePoint SearchServices. I am having trouble with getting the secondaryFileExtension field. Below my request for 2010 Search Service:

<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>

With the following SOAP envelope:

<?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>

I am getting the following response:

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

The QueryResult:

<Document>
    <Action>
        <LinkUrl fileExt="aspx">https://xxxxxxxxxxxxxxx…&lt;/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…&lt;/Value>
        </Property>
        <Property>
            <Name>HitHighlightedSummary</Name>
            <Type>String</Type>
            <Value><c0>Audio</c0> 2014-01-18…&lt;/Value>
        </Property>
        <Property>
            <Name>HitHighlightedProperties</Name>
            <Type>String</Type>
            <Value><HHTitle><c0>Audio</c0> 2…&lt;/Value>
        </Property>
        <Property>
            <Name>ContentClass</Name>
            <Type>String</Type>
            <Value>STS_ListItem_DocumentLibr…&lt;/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>

But the property SecondaryFileExtention is not present (it should containg "acc" because of audio file type). The action tag contains the following link: https://xxxxxxxxxxxxxxx.com/demo/testsp/Documents/Forms/DispForm.aspx?ID=1 When I go to this link I see a form with 2 fields name and title, and I can download the .acc file from. Doing similar request with SharePoint 2013 Search Service returns the following properties for a pdf file:

<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…&lt;/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…&lt;/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…&lt;/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…&lt;/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…&lt;/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…&lt;/Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>ParentLink</Key>
       <Value>https://xxxxxxxxxxx.co…&lt;/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…&lt;/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…&lt;/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…&lt;/Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>PartitionId</Key>
       <Value>d4cd988f-8939-401f-82e9-8…&lt;/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…&lt;/Key>
       <Value>AttachmentURI;deeplinks;D…&lt;/Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>RenderTemplateId</Key>
       <Value>~sitecollection/_catalogs…&lt;/Value>
       <ValueType>Edm.String</ValueType>
    </element>
    <element m:type="SP.KeyValue">
       <Key>piSearchResultId</Key>
       <Value>0_1</Value>
       <ValueType>Edm.String</ValueType>
    </element>
    </Cells>

Can I by any chance get the real file extension with SharePoint 2010 Search API?

4

1 回答 1

1

在对搜索服务(使用 SPServices)进行 SharePoint 2010 SOAP 调用时,我遇到了类似的问题。我有 2 个自定义字段——一个子标题(单行文本)和一个文章类别(托管元数据)——我需要显示在搜索结果中,而我得到的只是你列出的内容(通过文件扩展名排名)。

这两个字段必须添加为“托管属性”才能在搜索结果中返回 - 步骤如下:http://technet.microsoft.com/en-us/library/ff621097(v=office. 14).aspx(不过您需要中央管理级别的访问权限)。

一旦我的托管属性在那里,我遇到了另一个障碍,因为虽然我可以看到可用于搜索的托管属性(使用 SharePoint 的快速搜索工具: http: //fastforsharepoint.codeplex.com/),但它们没有显示在结果中,即使我将它们放在 SOAP 调用的 <Properties> 列表中。

对此的解决方案实际上是在 <QueryText> 字段中使用我的子标题值指定一个通配符(注意“#”)......这似乎强制显示这两个字段(路径条件是可选的):

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

不确定这是设计使然,还是 SharePoint 中的“功能”仅返回字段是否存在和/或被请求。

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

于 2014-03-18T17:32:54.523 回答