Поле SecondaryFileExtention API базовой службы поиска SharePoint 2010 отсутствует

Я разрабатываю клиент для SharePoint и внедряю SharePoint SearchServices 2013 и 2010 годов. У меня возникли проблемы с получением поля secondFileExtension. Под моим запросом на 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>

Со следующим конвертом 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>

Результат запроса:

<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» из-за типа аудиофайла). Тег действия содержит следующую ссылку: https://xxxxxxxxxxxxxxx.com/demo/testsp/Documents/Forms/DispForm.aspx?ID=1 Когда я перехожу по этой ссылке, я вижу форму с двумя полями: имя и заголовок, и я могу загрузить файл .acc из. Выполнение аналогичного запроса со службой поиска SharePoint 2013 возвращает следующие свойства файла 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>

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


person Dahiri Farid    schedule 28.01.2014    source источник


Ответы (1)


Я столкнулся с похожей проблемой при выполнении вызовов SOAP SharePoint 2010 в службу поиска (используя SPServices). У меня было 2 настраиваемых поля — подзаголовок (одна строка текста) и категория статьи (управляемые метаданные), которые мне нужно было отображать в результатах поиска, и все, что я возвращал, было именно тем, что вы указали (рейтинг через расширение файла ).

Эти два поля нужно было добавить как «управляемые свойства», чтобы сделать их доступными для возврата в результатах поиска — шаги здесь: http://technet.microsoft.com/en-us/library/ff621097(v=office.14).aspx (вы нужен доступ на уровне центрального администрирования).

Как только мои управляемые свойства оказались там, я столкнулся с другой проблемой, потому что, хотя я мог видеть управляемые свойства, доступные для поиска (с помощью инструмента FAST Search for SharePoint: http://fastforsharepoint.codeplex.com/), они не отображались в результатах, даже когда я помещал их в список ‹Properties› вызова SOAP.

На самом деле решение этой проблемы состояло в том, чтобы указать подстановочный знак со значением моего подзаголовка в поле ‹QueryText› (обратите внимание на "#")... это, по-видимому, заставило эти два поля отображаться (условие пути необязательно):

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

Не уверен, что это задумано или это «функция» в SharePoint, чтобы возвращать только поле, если что-то там существует и/или запрошено.

Возможно, есть более элегантные решения, если у вас есть доступ на уровне сервера, но это сработало для меня.

person Jeff Lewis    schedule 18.03.2014