クエリ例
地域を変更する
多くの販売代理店パートナーでは、ユーザーの国に応じて在庫レベルが異なります。API のデフォルトでは、国は US、通貨は USD ですが、これらは上書きしてお住まいの地域により適した結果を取得できます。
英国向けのクエリを比較してみましょう。
query GBMatch {
supMultiMatch(
country: "GB"
currency: "GBP"
queries: [{ mpn: "AR 32 HZL-TT", limit: 3 }]
) {
parts {
sellers(authorizedOnly: true) {
company {
name
}
offers {
inventoryLevel
}
}
}
}
}
... 一方、米国でのクエリは次のとおりです。
query USMatch {
supMultiMatch(
queries: [{ mpn: "AR 32 HZL-TT", limit: 3 }]
) {
parts {
sellers(authorizedOnly: true) {
company {
name
}
offers {
inventoryLevel
}
}
}
}
}
このケースでは、この特定の日には GB 向けに出荷可能な部品が 1,370 件ありました。しかし、米国のユーザーには 300 件の部品しか表示されません。
多くの販売代理店は複数の国へ出荷していたり、国ごとに在庫を分けていなかったりするため、入力された国と通貨は厳密なフィルターとしては使用されません。
国コードは ISO 3166(alpha-2)規格、通貨コードは ISO 4217 規格に従います。
特定サプライヤーとの完全一致 mpn マッチ
SupMultiMatch クエリを使用します。
query MultiMatch {
supMultiMatch(
queries: [{mpn: "FH12-5S-1SH(55)", limit: 2}]
options: {filters: {distributor_id: ["459", "1106", "2401", "2628", "2454", "3261", "12947"]}}
) {
hits
parts {
mpn
name
sellers {
company {
name
}
offers {
prices {
price
currency
}
}
}
}
}
}
これは、指定した販売代理店が販売している部品でフィルタリングされる点に注意してください。販売代理店の一覧は こちら で確認できます。他の販売代理店もこの部品を販売している場合、それらも表示されます。必要に応じて、処理時にいつでも除外できます。
会社 ID(例: "459")の代わりに、会社名(例: "Digi-Key")を指定することもできます。以下はその例です。
query MultiMatch {
supMultiMatch(
queries: [{mpn: "FH12-5S-1SH(55)", limit: 2}]
options: {filters: {distributor_id: ["Digi-Key"]}}
) {
hits
parts {
mpn
name
sellers {
company {
name
}
offers {
prices {
price
currency
}
}
}
}
}
}
価格情報のある販売元の部品
IDE で使用できるサンプルクエリを以下に示します。
query FindPrices {
supSearch(q: "AEC-Q100", limit: 3) {
results {
part {
mpn
manufacturer {
name
}
sellers(includeBrokers: false) {
company {
name
}
offers {
clickUrl
inventoryLevel
prices{
price
currency
quantity
}
}
}
}
}
}
}
完全一致の部品マッチ
supMultiMatch クエリでは、複数の MPN を入力してデータを取得でき、それぞれについて完全一致を検索します。
query MatchParts {
supMultiMatch(queries: [{mpn: "G3VM-101PR"}]) {
hits
reference
parts {
id
slug
mpn
manufacturer {
name
}
}
}
}
在庫あり部品でのフィルタリング
検索時に、在庫のある部品だけを含めるよう指定できます。たとえば次のようになります。
supSearch(q: "LM339", limit: 1, inStockOnly: true) { ... }
このフィルターを true に設定すると、no stock at all を持つ部品は除外されます。ある部品に 1 社の販売代理店からでも在庫がある場合、その部品は在庫ありとみなされ、クエリ結果に返されます。
このフィルタリングでは販売代理店の在庫はまったく考慮されず、部品レベルで適用されます。
試せる例を以下に示します。このクエリは AEC-Q100 を検索し、ページネーションの start ページを 5、inStockOnly を true に設定しています。
query in_stock_filter{
supSearch(q: "AEC-Q100", start: 5, inStockOnly: true) {
results {
part {
mpn
manufacturer {
name
}
sellers(includeBrokers: false) {
company {
name
}
}
}
}
}
}
想定外の MPN が返される
検索やマッチング時に、- や . のような英数字以外の文字だけが異なる追加の部品が見つかることがあります。
たとえば、次の MPN に対する supMultiMatch クエリを考えてみましょう。
query MultiMatch {
supMultiMatch(queries: {mpn: "ASV-18432MHZ-EJ-T", limit: 5}) {
hits
parts {
mpn
}
}
}
この場合、ASV-18.432MHZ-EJ-T や ASV-1.8432MHZ-E-J-T(その他を含む)といった複数の MPN が返されることがあります。
この動作は、elastic search エンジンでインデックス作成のために部品が「トークン化」される方式によるものです。
MPN は特殊文字を無視してトークンに分割されます(例: CV 3-200/SPG は `CV`、`3200`、`SPG` になる場合があります)。
その後、マッチングはトライグラム(3 文字の組み合わせ)を使って行われます。検索ではトークン化された MPN 全体に一致する必要がありますが、部分一致はトライグラムに依存します。たとえば:
-
Match: "CV 3-20", "CV 320", "00 SPG" - Each part aligns with at least one full token
-
No Match: "CV 3", "CV 3-", "CV 32" - No part of these aligns with any token
ワイルドカードの使用
部分的な部品番号で検索すると結果が多すぎる場合や、部品番号の一致条件に特定の要件がある場合があります。このような場合は、ワイルドカードを使って検索を絞り込めます。
-
文字
*は、任意の文字列(0 文字を含む)に一致します。 -
文字
?は、任意の 1 文字に一致します。
ワイルドカードは部品番号内のどこでも使用できます。部品番号の途中を見つけるためにワイルドカードを使う必要はありません。先頭と末尾のワイルドカードは自動的に追加されるためです。たとえば、 *74LS25* は 74LS25 と同じ結果を返します。
語句に 1 つ以上のワイルドカードを追加すると、他のワイルドカードは自動追加されません。これは接頭辞検索に利用できます。たとえば、 lv40 は部品番号内のどこかに lv40 を含む部品を見つけますが、 lv40* は lv40 で始まる部品だけを見つけます。
部品の工場リードタイム
API では 2 つのフィールドをクエリできます。
-
factoryLeadDaysSupOfferのSupOfferは、工場から部品を調達するまでの日数を返します。 -
estimatedFactoryLeadDaysSupPartのSupPartは、信頼できる販売代理店のオファーから算出された工場リードタイムの推定日数を返します。
認定販売元向けのクエリ例を以下に示します。
query LeadDaysSearch {
supSearch(q: "IRL3803STRLPBF", limit: 2) {
results {
part {
mpn
estimatedFactoryLeadDays
sellers(authorizedOnly: true) {
offers {
factoryLeadDays
}
}
}
}
}
}
類似部品
部品の検索またはマッチング時に、similarParts を返すよう指定できます。これらは、仕様と機能が類似していると Nexar が判断した部品です。以下はクエリ例です。
query SimilarParts {
supSearch(q: "LM339MX", limit: 1) {
hits
results {
part {
id
mpn
name
manufacturer { name }
similarParts {
id
mpn
manufacturer { name }
}
}
}
}
}