Dela via


Frågeformat för postsökning

Ett anrop till PeerGroupSearchRecords-funktionen kräver en XML-frågesträngsparameter som används för att fastställa de grundläggande kriterierna för en sökning. Använd följande schema för att formulera en XML-sträng:

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="https://www.w3.org/2001/XMLSchema">

  <xs:simpleType name="alphanumType">
     <xs:restriction base="xs:string">
        <xs:pattern value="\c+"/>
     </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="operatorType">
      <xs:choice maxOccurs="unbounded">
         <xs:element ref="and" />
         <xs:element ref="or" />
         <xs:element ref="clause" />
      </xs:choice>
  </xs:complexType>

  <xs:element name="and" type="operatorType"/>

  <xs:element name="or" type="operatorType"/>

  <xs:element name="clause">
      <xs:complexType>
          <xs:simpleContent>
              <xs:extension base="xs:string">
        <xs:attribute name="attrib" type="alphanumType" />
        <xs:attribute name="type">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="string"/>
                      <xs:enumeration value="date"/>
                      <xs:enumeration value="int"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
        <xs:attribute name="compare" default="equal">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="equal"/>
                      <xs:enumeration value="greater"/>
                      <xs:enumeration value="less"/>
                      <xs:enumeration value="notequal"/>
                      <xs:enumeration value="greaterorequal"/>
                      <xs:enumeration value="lessorequal"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:extension>
          </xs:simpleContent>
      </xs:complexType>
  </xs:element>

  <xs:element name="peersearch">
      <xs:complexType>
          <xs:choice>
              <xs:element ref="clause" />
              <xs:element ref="and" />
              <xs:element ref="or" />
          </xs:choice>
      </xs:complexType>
  </xs:element>
</xs:schema> 

Det primära elementet i en postsökning är peersearch, som innehåller URI (Uniform Resource Identifier) för det associerade schemat i attributet xmlns. När peersearch- används som ett underordnat element kan du använda och, -satsoch eller som underordnade element.

  • och – elementet och utför en logisk AND-åtgärd på en eller flera satser som finns mellan de inledande och avslutande taggarna. Andra - och- och - eller-taggar kan vara underordnade, och rekursiva resultat av deras underordnade satser ingår i åtgärden.

    Om du till exempel vill hämta en post som innehåller ett namn som är lika med James Peters och en senaste uppdatering som är större än 2003-02-28 eller ett skapandedatum som är mindre än 2003-01-01 använder du följande XML-frågesträng:

    <?xml version="1.0" encoding="utf-8" ?> 
    <peersearch xmlns:xs="https://www.w3.org/2001/XMLSchema">
       <and>
          <clause attrib="peercreatorid" type="string" compare="equal">James Peters</clause>
          <or>
             <clause attrib="peerlastmodificationtime" type="date" compare="greater">2003-01-31</clause>
             <clause attrib="peercreationtime" type="date" compare="less">2003-02-328</clause>
          </or>
       </and>
    </peersearch>
    
  • -satsen-satsen-elementet anger en grundläggande jämförelseregel som jämför värdet för ett specifikt postattribut med värdet som finns mellan de inledande och avslutande taggarna. Den typen och jämföra attribut måste anges jämföra anger den jämförelseåtgärd som ska utföras. En enkel sökning som anger att alla matchade poster måste till exempel ha en peercreatorid värde som är lika med James Peters visas i XML-frågesträngen som följande:

    <?xml version="1.0" encoding="utf-8" ?> 
    <peersearch xmlns:xs="https://www.w3.org/2001/XMLSchema">
       <clause attrib="peercreatorid" type="string" compare="equal">James Peters</clause>
    </peersearch>
    

    Vanliga attribut är int, strängoch datum. Attributet datum kan vara ett av de standarddatumformat som beskrivs i https://www.w3.org/TR/NOTE-datetime.

    Värden för attributet jämför är lika med, notequal, mindre, större, lessorequaloch greaterorequal.

  • eller – elementet eller utför en logisk ELLER-åtgärd på en eller flera satser som finns mellan de inledande och avslutande taggarna. Andra - eller- och - och-element kan vara underordnade, och rekursiva resultat av de underordnade satserna ingår i åtgärden. Om du till exempel vill hämta en post som innehåller ett namn som är lika med James Peters, eller en senaste uppdatering som är mellan 2003-01-31 och 2003-02-28, använder du följande XML-frågesträng:
<?xml version="1.0" encoding="utf-8" ?> 
<peersearch xmlns:xs="https://www.w3.org/2001/XMLSchema">
   <or>
      <clause attrib="peercreatorid" type="string" compare="equal">James Peters</clause>
      <and>
         <clause attrib="peerlastmodificationtime" type="date" compare="greater">2003-01-31</clause>
         <clause attrib="peerlastmodificationtime" type="date" compare="less">2003-02-28</clause>
      </and>
   </or>
</peersearch>

Den första nivån av noder efter peersearch- kan bara ha ett element. Efterföljande underordnade element i det elementet kan dock ha många element på samma nivå.

Följande sökfråga är felaktig:

<?xml version="1.0" encoding="utf-8" ?> 
<peersearch xmlns:xs="https://www.w3.org/2001/XMLSchema">
   <clause attrib="peercreatorid" type="string" compare="equal">James Peters</clause>
   <and>
      <clause attrib="peerlastmodificationtime" type="date" compare="greater">2003-01-31</clause>
      <clause attrib="peerlastmodificationtime" type="date" compare="less">2003-02-28</clause>
   </and>
</peersearch>

Frågan misslyckas eftersom två värden returneras för matchningen utan att matchas till ett sant/falskt värde, vilket innebär att en sats är en fråga för namnet på en post som är lika med James Peters, och AND-åtgärden matchar de två komponentsatserna. Resultatet är två logiska true/false-värden som är motstridiga.

Om du vill hämta alla poster som innehåller ett namn som är lika med James Peters och en senaste uppdatering som är mellan 1/31/2003 och 2/28/2003, placerar du -satsen och och taggar som är på samma nivå mellan att öppna och stänga och taggar. I följande exempel visas den lyckade frågan:

<?xml version="1.0" encoding="utf-8" ?> 
<peersearch xmlns:xs="https://www.w3.org/2001/XMLSchema">
    <and>
      <clause attrib="peercreatorid" type="string" compare="equal">James Peters</clause>
      <and>
         <clause attrib="peerlastmodificationtime" type="date" compare="greater">2003-01-31</clause>
         <clause attrib="peerlastmodificationtime" type="date" compare="less">2003-02-28</clause>
      </and>
   </and>
</peersearch>

I följande lista identifieras annan specifik information som du måste känna till för att skriva en lyckad fråga:

  • Taggarna och och eller kan inte hittas mellan att öppna och stänga -satsen taggar eftersom de i den konfigurationen tolkas som en del av det värde som ska matchas mot, vilket resulterar i ett fel eller en misslyckad matchning.
  • Varje par med och och eller inledande och avslutande taggar måste innehålla minst en eller flera underordnade noder.
  • En nolluppsättning element tillåts inte i det här schemat.

Postattribut

Med hjälp av postattributschematkan en användare skapa postattribut som attrib XML-attribut i ett satselement anger. Attribut för en ny post läggs till genom att ange pszAttributes medlem i PEER_RECORD till en XML-sträng med det format som anges i schemat.

Peer-infrastrukturen reserverar följande attributnamn:

  • peerlastmodifiedby
  • peercreatorid
  • peerlastmodificationtime
  • peerrecordid
  • peerrecordtype
  • peercreationtime
  • peerlastmodificationtime

Specialtecken

Vissa tecken kan användas för att uttrycka matchande mönster eller för att undkomma andra specialtecken. Dessa tecken beskrivs i tabellen nedan.

Teckenmönster Beskrivning
* Jokertecknet. När det här tecknet påträffas i ett satsvärde matchar det 0-n tecken av valfritt värde, inklusive blanksteg och icke-numeriska tecken. Till exempel:
"<clause attrib="peercreatorid" type="string" compare="equal">James P*</clause>"
Den här satsen matchar alla peercreatorid- värden med förnamnet "James" och ett efternamn som börjar med "P".
\* En förrymd asterisk. Den här sekvensen matchar ett asterisktecken.
? Jokertecknet med ett tecken. När det här tecknet påträffas i ett satsvärde matchar det alla enskilda tecken, inklusive blanksteg och icke-numeriska tecken. Till exempel:
"<clause attrib="filename" type="string" compare="equal">data-0?.xml</clause>"
Den här satsen matchar filnamn värden som "data-01.xml" och "data-0B.xml".
\? Ett undantaget frågetecken. Den här sekvensen matchar ett frågetecken.
\\ Ett undantaget omvänt snedstreck. Den här sekvensen matchar ett enda omvänt snedstreck.

Om teckensekvensen inte är giltig returnerar funktionen PeerGroupSearchRecords felet E_INVALIDARG. En ogiltig sekvens är en sekvens som innehåller ett "\" (omvänt snedstreck) inte omedelbart följt av antingen ett "*" (asterisk) tecken, ett "?" (frågetecken) eller ett annat "\" (omvänt snedstreck).