Layanan pencarian ini dimaksudkan untuk menghubungkan data kejadian dengan koleksi. Ini akan menggunakan data koleksi untuk pencarian tetapi perilaku ini dapat ditimpa dengan tag mesin set data.
Layanan ini dapat menerima parameter berikut:
Jika ada tag mesin di set data, kami menggunakannya dan menghentikan pencarian.
Layanan harus mengembalikan seberapa bagus kecocokannya (tepat, kabur, dll.). Pencocokan persis hanya akan terjadi jika kode cocok dan ID cocok atau tidak bertentangan (misalnya: hanya ada di satu sisi).
Ada yang lain? apakah ada parameter lain yang berguna untuk diperhitungkan?
Saya memasukkan DEV versi pertama dari layanan pencarian koleksi (masih tidak menggunakan tag mesin) untuk melihat apakah ini yang kami harapkan.
Ini mengembalikan daftar kecocokan institusi dan satu lagi untuk kecocokan koleksi. Ini adalah daftar karena kode tidak unik sehingga mungkin ada kasus di mana kita dapat memiliki beberapa opsi dan kita tidak dapat membedakan dengan bidang lain.
Untuk setiap pertandingan itu menunjukkan:
exact
atau fuzzy
. exact
hanya jika kode dan pengenal cocok. Kalau tidak, itu fuzzy
.CODE_MATCH
: tidak mengabaikan kasusIDENTIFIER_MATCH
: tidak mengabaikan kasusALTERNATIVE_CODE_MATCH
: tidak mengabaikan kasusNAME_MATCH
: mengabaikan huruf besar/kecil dan menghilangkan aksen dan spasi tetapi tidak melakukan pencocokan awalan atau akhiranPROBABLY_ON_LOAN
: terjadi ketika institusi pemilik dan institusi tidak samaINST_COLL_MISMATCH
: itu terjadi ketika institusi koleksi tidak ada di institusi yang cocok.Ketika ada kecocokan institusi, koleksi hanya cocok secara kabur jika itu milik salah satu institusi yang cocok. Kecocokan koleksi yang tepat akan selalu dikembalikan.
Anda dapat memeriksa contoh berikut untuk melihat cara kerja layanan:
INST_COLL_MISMATCH
PROBABLY_ON_LOAN
Apakah saya melewatkan sesuatu @MortenHofft @timrobertson100 ?
Saya telah menambahkan pemeriksaan tag mesin mengikuti format yang sudah digunakan dalam saluran pipa untuk saat ini:
processing.gbif.org
institutionCode
: memetakan kode institusi ke institusi GrSciCollcollectionCode
: memetakan kode koleksi ke koleksi GrSciCollcollectionToInstitutionCode
: memetakan kode koleksi ke institusi GrSciColl. Saya mungkin akan mengganti namanya menjadi collectionCodeToInstitution
(TBD).institutionToCollectionCode
: memetakan kode institusi ke koleksi GrSciColl. Saya mungkin akan mengganti namanya menjadi institutionCodeToCollection
(TBD).Nilai tag harus mengikuti pola {key}:{code}
.
Kelihatannya bagus - Saya sangat penasaran untuk melihatnya diterapkan pada data aktual.
bertele-tele atau tidak
Haruskah kita memiliki opsi "verbose" seperti pada pencocokan spesies?
Jika kita membayangkan siapa pun kecuali staf yang menggunakan ini, mungkin berguna untuk hanya memiliki opsi match or none
. Katakanlah Plazi menggunakannya untuk membuat tautan dari kode koleksi di artikel.
// plain lookup - not verbose - will at most return one institution and one collection.
{
institutionMatch: {
matchType: 'NONE'
},
{
collectionMatch: {
matchType: 'FUZZY',
reasons: ['SAME_NAME', 'SAME_CODE', 'SAME_COUNTRY'],
entity: {
...
}
}
}
}
// verbose option
// could be like the one running in dev
{
"institutionMatches": [],
"collectionMatches": [
...
]
}
tentang penamaan
API pencocokan spesies menggunakan matchType
alih-alih type
dan kluster menggunakan reasons
alih-alih remarks
.
Data nyata
Sebelum menjalankannya pada data nyata, saya bertanya-tanya apakah perlu memeriksa 500 kombinasi teratas dari kode institusi/id colelctionCode/ID dan menilai beberapa di antaranya secara manual? Kita mungkin belajar sesuatu (katakanlah kita perlu mencoba membalik id dan kode)
Apa yang dimaksud dengan kecocokan?
Kapan Anda membayangkan ini akan memicu kecocokan?
Negara sebagai disambiguator
Apakah masuk akal untuk menambahkan negara sebagai parameter pencarian? Saat mengindeks kejadian, kami dapat menambahkan negara penerbit untuk disambiguasi ketika misalnya ada 2 koleksi yang cocok? Atau apakah itu lebih baik dilakukan oleh konsumen yang mengulangi hasilnya?
Saya baru saja mencoba mencocokkan berdasarkan ekstrak csv yang saya miliki beberapa waktu lalu.
Csv berbeda institutionId, institutionCode, datasetKey, publisherKey
dengan jumlah kemunculan untuk masing-masing.
Saya mengambil apa pun dengan lebih dari 2500 kemunculan dan mencoba mencocokkannya dengan layanan.
105,871,241 occurrences had a single match
24,553,278 with an exact singular match
27,113,941 occurrences had multiple matches
34,998,066 occurrences had no match
2,374 combinations was tested against the service (multiple can be the same since it included dataset and publisher)
Itu bukan awal yang buruk. Saya belum mengevaluasi kualitas pertandingan.
_Apa yang dimaksud dengan kecocokan?_
Kapan Anda membayangkan ini akan memicu kecocokan?
- Tepat saja?
- Kabur tapi hanya satu hasil
- Institusi yang tepat, tetapi hanya satu koleksi fuzzy?
Untuk ini maksud Anda untuk versi non-verbose di mana kami hanya menampilkan 1 kecocokan, bukan?
Itu bisa seperti:
Apakah menurut Anda kami juga harus memberikan status kecocokan secara keseluruhan?
_Apa yang dimaksud dengan kecocokan?_
Kapan Anda membayangkan ini akan memicu kecocokan?
- Tepat saja?
- Kabur tapi hanya satu hasil
- Institusi yang tepat, tetapi hanya satu koleksi fuzzy?
Untuk ini maksud Anda untuk versi non-verbose di mana kami hanya menampilkan 1 kecocokan, bukan?
Maksud saya ketika menggunakannya dalam saluran pipa untuk menetapkan ID GrSciColl ke kejadian. Saya membayangkan bahwa layanan ini mencakup keputusan dan semua logika. Bagaimana cara kerjanya untuk layanan pencarian lainnya?
Itu mengingatkan saya, Anda menyebutkan beberapa hari yang lalu bahwa Anda mempertimbangkan untuk menambahkan semua ID yang cocok ke indeks kemunculan.
Saya kira ada 2 versi yang mungkin:
Saya lebih menyukai versi 2. Hanya menambahkan ID GrSciColl ke kejadian ketika kami memiliki 1 kecocokan yang meyakinkan. Bukan serangkaian kecocokan kandidat. Dan jika kami ingin lebih banyak kecocokan, maka kami meminta penerbit untuk menambahkan pengidentifikasi yang lebih baik ke GrSciColl atau kemunculannya. Atau kami menambahkan tag mesin ke set data untuk berjaga-jaga.
Jika berguna untuk membuat semua kandidat diindeks, dapatkah kita mempertimbangkan bidang terpisah untuk itu?
Haruskah Layanan mengembalikan bendera. PERTANDINGAN KODE KOLEKSI FUZZY. TIDAK ADA KECOCOKAN KODE KOLEKSI. Mirip dengan layanan pencocokan spesies.
Saya bisa memikirkan bendera ini:
AMBIGUOUS_INSTITUTION
: lebih dari 1 institusi ditemukan dan kami tidak dapat memutuskan hubunganAMBIGUOUS_COLLECTION
: sama seperti di atas tapi untuk koleksiFUZZY_INSTITUTION_MATCH
: 1 institusi cocok tapi tidak jelasFUZZY_COLLECTION_MATCH
: sama seperti diatas tapi untuk koleksiINSTITUTION_NAME_USED
: bidang institutionCode
berisi nama institusi bukan kodeOWNER_INSTITUTION_NAME_USED
: sama seperti di atas tetapi untuk institusi pemilikCOLLECTION_NAME_USED
: sama seperti diatas tapi untuk koleksiNO_COLLECTION_CODE_MATCH
: kode yang diberikan tidak cocokNO_INSTITUTION_CODE_MATCH
: sama seperti diatasNO_COLLECTION_ID_MATCH
: ID yang diberikan tidak cocokNO_INSTITUTION_ID_MATCH
: sama seperti diatasINSTITUTION_COLLECTION_MISMATCH
: koleksi yang ditemukan bukan milik institusi yang cocokEDIT: yang INSTITUTION_NAME_USED
mungkin dapat dihapus dan hanya menggunakan FUZZY_INSTITUTION_MATCH
untuk kasus ini. Saya tidak tahu apa yang akan lebih berguna bagi penerbit
Saya menyukainya - menurut saya banyak penerbit menghargai bendera itu dan menindaklanjutinya. Ini akan memberi mereka wawasan untuk mengubah data dan meningkatkan pencocokan.
Layanan sekarang mengembalikan respons seperti:
{
"institutionMatch": {
...
},
"collectionMatch": {
...
},
alternativeMatches {
institutionMatches: []
collectionMatches: []
}
}
Pencocokan alternatif hanya ditampilkan jika parameter verbose
disetel ke true. Pencocokan fuzzy dibatasi hingga 20 hasil karena alasan kinerja.
Itu juga menambahkan parameter Country
yang digunakan untuk memutuskan hubungan: http://api.gbif-dev.org/v1/grscicoll/lookup?institutionCode=BR&country=BE&verbose=true
Kecocokan terjadi jika salah satu dari kondisi ini terpenuhi:
Selain itu, institusi yang pemilik institusinya berbeda dengan institusi tidak dianggap tandingan. Selain itu, koleksi yang lembaganya tidak cocok dengan lembaga yang diterima juga tidak dianggap cocok.
Saya belum menambahkan bendera tetapi bidang status sebagai gantinya:
ACCEPTED
: diterima cocokAMBIGUOUS
: lebih dari 1 hasil ditemukan dan kami tidak dapat memutuskan hubunganAMBIGUOUS_MACHINE_TAGS
: sama seperti di atas tetapi dengan tag mesin yang cocokAMBIGUOUS_OWNER
: ada hasil tapi tidak cocok dengan pemilik institusi jadi kita skip agar tidak menautkan pada koleksi pinjamanAMBIGUOUS_INSTITUTION_MISMATCH
: ada kecocokan fuzzy tetapi bukan milik institusi yang cocokDOUBTFUL
: kecocokan yang ditemukan tidak jelasBendera lainnya dapat disimpulkan dari bidang pertandingan reasons
. Masalah dapat diatur dari bidang ini dalam pipeline.
Saya telah mengekstrak dari data kami dalam kombinasi PROD dari bidang-bidang ini yang ada di lebih dari 1000 catatan:
v_institutionid
v_institutioncode
v_ownerinstitutioncode
v_collectioncode
v_collectionid
datasetkey
Selain itu, saya mengambil negara dari organisasi penerbitan kumpulan data.
Kemudian saya meneruskannya ke layanan pencarian di UAT. Hasilnya ada di spreadhseet ini
Komentar yang paling membantu
Saya baru saja mencoba mencocokkan berdasarkan ekstrak csv yang saya miliki beberapa waktu lalu.
Csv berbeda
institutionId, institutionCode, datasetKey, publisherKey
dengan jumlah kemunculan untuk masing-masing.Saya mengambil apa pun dengan lebih dari 2500 kemunculan dan mencoba mencocokkannya dengan layanan.
Itu bukan awal yang buruk. Saya belum mengevaluasi kualitas pertandingan.