Bagikan melalui


Format Kueri Pencarian Rekaman

Panggilan ke fungsi PeerGroupSearchRecords memerlukan parameter string kueri XML yang digunakan untuk menentukan kriteria dasar pencarian. Gunakan skema berikut untuk merumuskan string XML:

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

Elemen utama dalam pencarian rekaman adalah peersearch, yang berisi Uniform Resource Identifier (URI) dari skema terkait dalam atribut xmlns . Saat peersearch digunakan sebagai elemen turunan, Anda dapat menggunakan dan, klausa, dan atau sebagai elemen anak.

  • dan - Elemen dan melakukan operasi AND logis pada satu atau beberapa klausa yang terkandung antara tag pembuka dan penutup. Tag dan danatau lainnya dapat berupa turunan, dan hasil rekursif klausul anak mereka disertakan dalam operasi.

    Misalnya, jika Anda ingin mendapatkan rekaman yang berisi nama yang sama dengan James Peters, dan pembaruan terakhir yang lebih besar dari 28/2/2003, atau tanggal pembuatan yang kurang dari 31/1/2003, gunakan string kueri XML berikut:

    <?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>
    
  • clause - Elemen klausul menentukan aturan komparatif dasar yang membandingkan nilai atribut rekaman tertentu dengan nilai yang terkandung di antara tag pembuka dan penutup. Atribut jenis dan bandingkan harus disediakan dibandingkan menunjukkan operasi perbandingan yang akan dilakukan. Misalnya, pencarian sederhana yang menunjukkan semua rekaman yang cocok harus memiliki nilai peercreatorid yang sama dengan James Peters muncul dalam string kueri XML sebagai berikut:

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

    Atribut jenis umum termasuk int, string, dan tanggal. Atribut tanggal dapat menjadi salah satu format tanggal standar yang dijelaskan di https://www.w3.org/TR/NOTE-datetime.

    Nilai untuk atribut bandingkansama, notequal, less, greater, lessorequal, dan greaterorequal.

  • atau - Elemen atau melakukan operasi OR logis pada satu atau beberapa klausa yang terkandung antara tag pembuka dan penutup. Elemen atau dan lain dapat berupa anak-anak, dan hasil rekursif klausul anak disertakan dalam operasi. Misalnya, jika Anda ingin mendapatkan rekaman yang berisi nama yang sama dengan James Peters, atau pembaruan terakhir antara 31/1/2003 dan 28/2/2003, gunakan string kueri XML berikut:
<?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>

Tingkat simpul pertama setelah peersearch hanya dapat memiliki satu elemen. Namun, anak-anak berikutnya dari elemen tersebut dapat memiliki banyak elemen pada tingkat yang sama.

Kueri pencarian berikut ini salah:

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

Kueri gagal karena dua nilai dikembalikan untuk kecocokan tanpa diselesaikan menjadi satu nilai true/false, yang berarti bahwa satu klausa adalah kueri untuk nama rekaman yang sama dengan James Peters, dan operasi AND cocok dengan dua klausa komponen. Hasilnya adalah dua nilai benar/salah logis yang bertentangan.

Untuk mendapatkan semua catatan yang berisi nama yang sama dengan James Peters, dan pembaruan terakhir antara 31/1/2003 dan 28/2/2003, tempatkan klausul dan dan tag yang berada pada tingkat yang sama antara pembukaan dan penutupan dan tag. Contoh berikut menunjukkan kueri yang berhasil:

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

Daftar berikut mengidentifikasi informasi spesifik lain yang harus Anda ketahui untuk menulis kueri yang berhasil:

  • Tag dan dan atau tidak dapat ditemukan antara tag klausa pembuka dan penutup karena, dalam konfigurasi tersebut, tag tersebut ditafsirkan sebagai bagian dari nilai yang cocok dengan, yang menghasilkan kesalahan atau kecocokan yang gagal.
  • Setiap pasangan dan danatau tag pembuka dan penutup harus menyertakan setidaknya satu atau beberapa simpul anak.
  • Set nol elemen tidak diperbolehkan dalam skema ini.

Atribut Rekaman

Dengan menggunakan Skema Atribut Rekaman, pengguna dapat membuat atribut rekaman yang ditentukan atribut XML attrib dalam elemen klausul. Atribut untuk rekaman baru ditambahkan dengan mengatur anggota pszAttributesdari PEER_RECORD ke string XML menggunakan format yang ditentukan dalam skema.

Infrastruktur Serekan mencadangkan nama atribut berikut:

  • peerlastmodifiedby
  • peercreatorid
  • peerlastmodificationtime
  • peerrecordid
  • peerrecordtype
  • waktu peerkreasi
  • peerlastmodificationtime

Karakter Khusus

Karakter tertentu dapat digunakan untuk mengekspresikan pola pencocokan, atau untuk menghindari karakter khusus lainnya. Karakter-karakter ini dijelaskan dalam tabel di bawah ini.

Pola karakter Deskripsi
* Karakter kartubebas. Ketika karakter ini ditemui dalam nilai klausul, karakter ini cocok dengan karakter 0-n dari nilai apa pun, termasuk spasi putih dan karakter nonalfanumerik. Contohnya:
"<clause attrib="peercreatorid" type="string" compare="equal">James P*</clause>"
Klausa ini cocok dengan semua nilai peercreatorid dengan nama depan "James" dan nama belakang yang dimulai dengan "P".
\* Tanda bintang yang lolos. Urutan ini cocok dengan karakter tanda bintang.
? Karakter kartubebas karakter tunggal. Ketika karakter ini ditemui dalam nilai klausul, karakter tersebut cocok dengan karakter tunggal apa pun, termasuk karakter spasi kosong dan nonalfanumerik. Misalnya:
"<clause attrib="filename" type="string" compare="equal">data-0?.xml</clause>"
Klausa ini cocok dengan nilai nama file seperti "data-01.xml" dan "data-0B.xml".
\? Tanda tanya yang lolos. Urutan ini cocok dengan karakter tanda tanya.
\\ Garis miring terbelakang yang lolos. Urutan ini cocok dengan satu karakter garis miring terbalik.

Jika urutan karakter tidak valid, fungsi PeerGroupSearchRecords mengembalikan kesalahan E_INVALIDARG. Urutan yang tidak valid adalah urutan apa pun yang berisi karakter "\" (garis miring terbalik) yang tidak segera diikuti oleh karakter "*" (tanda bintang), "?" karakter (tanda tanya), atau karakter "\" (garis miring terbalik) lainnya.