Ringkasan

Freebase Search API menyediakan akses ke data Freebase berdasarkan kueri teks bebas. Hasil kueri diurutkan dan memiliki skor relevansi numerik.
Developer dapat menerapkan filter untuk membatasi hasil penelusuran ke jenis data tertentu. Lihat Search Cookbook untuk mengetahui informasi selengkapnya tentang cara membuat kueri penelusuran yang mendetail.
Beberapa contoh cara penggunaan Search API oleh developer antara lain:
- Menyarankan entitas secara otomatis (misalnya, Freebase Suggest Widget)
- Mendapatkan daftar berperingkat entity yang paling penting dengan nama tertentu.
- Menemukan entitas menggunakan Search Metaschema.
Contoh kode berikut dalam beberapa bahasa yang didukung menunjukkan cara melakukan penelusuran artis musik yang cocok dengan teks “Cee Lo Green”. Batasan tambahan adalah bahwa mereka menciptakan sesuatu yang disebut “The Lady Killer”.
Python
import json import urllib api_key = open(".api_key").read() query = 'blue bottle' service_url = 'https://www.googleapis.com/freebase/v1/search' params = { 'query': query, 'key': api_key } url = service_url + '?' + urllib.urlencode(params) response = json.loads(urllib.urlopen(url).read()) for result in response['result']: print(result['name'] + ' (' + str(result['score']) + ')')
Ruby
require 'rubygems' require 'cgi' require 'httparty' require 'json' require 'addressable/uri' API_KEY = open(".freebase_api_key").read() url = Addressable::URI.parse('https://www.googleapis.com/freebase/v1/search') url.query_values = { 'query' => 'Blue Bottle', 'key'=> API_KEY } response = HTTParty.get(url, :format => :json) response['result'].each { |topic| puts topic['name'] }
Java
package com.freebase.samples; import com.google.api.client.http.GenericUrl; import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpRequestFactory; import com.google.api.client.http.HttpResponse; import com.google.api.client.http.HttpTransport; import com.google.api.client.http.javanet.NetHttpTransport; import com.jayway.jsonpath.JsonPath; import java.io.FileInputStream; import java.util.Properties; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; public class SearchExample { public static Properties properties = new Properties(); public static void main(String[] args) { try { properties.load(new FileInputStream("freebase.properties")); HttpTransport httpTransport = new NetHttpTransport(); HttpRequestFactory requestFactory = httpTransport.createRequestFactory(); JSONParser parser = new JSONParser(); GenericUrl url = new GenericUrl("https://www.googleapis.com/freebase/v1/search"); url.put("query", "Cee Lo Green"); url.put("filter", "(all type:/music/artist created:\"The Lady Killer\")"); url.put("limit", "10"); url.put("indent", "true"); url.put("key", properties.get("API_KEY")); HttpRequest request = requestFactory.buildGetRequest(url); HttpResponse httpResponse = request.execute(); JSONObject response = (JSONObject)parser.parse(httpResponse.parseAsString()); JSONArray results = (JSONArray)response.get("result"); for (Object result : results) { System.out.println(JsonPath.read(result,"$.name").toString()); } } catch (Exception ex) { ex.printStackTrace(); } } }
JavaScript
<!DOCTYPE html> <html> <head> <script src="https://www.gstatic.com/external_hosted/jquery2.mi><n.js&qu>o<t;/sc>r<ipt<>/span> </head bodyaside class><=">;warning&<quot;st>rongWarning: /strongThe Freebase API will be retired< on Ju>n<e 30,<>/span> 2015./aside script var service_url = 'https://www.googleapis.com/freebase/v1/search'; var params = { 'query': 'Cee Lo Green', 'filter': '(all type:/music/artist created:"The Lady Killer")', 'limit': 10, 'indent': true }; $.getJSON(service_url + '?callback=?',< pa>rams).done(function(response) { $.each(response.result, funct<ion(i, >r<esult>)< { > $('div', {text:result['name']}).appendTo(document.body); }); }); /script /body /html
PHP
<!DOCTYPE html> <html> <body> <?php include('.freebase-api-key'); $service_url = 'https://www.googleapis.com/freebase/v1/search'; $params = arra>y( 'query' = >39;Blue Bottle', 'key' = $freebase_api_key ); $url = $service_url . '?' . http_build_query($params); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $response = json_decode(curl_exec($ch), true); curl_close($ch); foreach($response['<;re>sult'>;<] as >$<resul>t) { echo $result['name'] . 'br/'; } ? /body /html
Lihat juga halaman Client Libraries untuk mengetahui apakah bahasa favorit Anda didukung.
Dokumentasi Search API
Lihat juga dokumentasi berikut:
- Lihat Dokumen referensi Penelusuran untuk mengetahui detail cara menggunakan API.
- Lihat Search Cookbook untuk mengetahui informasi selengkapnya tentang cara membuat kueri penelusuran yang mendetail.
- Lihat dokumen Metaskema Penelusuran untuk mengetahui informasi tentang cara hubungan antara entity dan properti dijelaskan.
Pertimbangan keamanan
Search API mengindeks dan menelusuri konten buatan pengguna yang disimpan dalam grafik Freebase. Artinya, Anda tidak dapat langsung menggunakan konten di halaman web tanpa melakukan escape dengan aman terlebih dahulu.
Lihat Memulai: Keamanan untuk mengetahui informasi selengkapnya.
Pemfilteran lanjutan
Search API mendukung sejumlah besar batasan filter untuk menargetkan penelusuran ke entitas yang benar dengan lebih baik.
Misalnya, dengan menggunakan batasan filter "type", kita dapat menampilkan daftar orang-orang paling terkenal di Freebase.
filter=(any type:/people/person)
Batasan filter menerima berbagai input:
- ID yang dapat dibaca manusia untuk entitas atau pengguna skema, misalnya:
/people/person
untuk batasan jenis/film
untuk batasan domain
- MID Freebase, misalnya:
/m/01g317
untuk batasan jenis/people/person
yang sama/m/010s
untuk batasan domain/film
di atas
- Nama entitas, misalnya:
"person"
untuk batasan jenis/people/person
yang kurang presisi"film"
untuk batasan domain/film
yang kurang presisi
Batasan filter dapat diklasifikasikan ke dalam beberapa kategori. Lihat Search Cookbook untuk mengetahui detail selengkapnya.
Batasan filter dapat digabungkan dan diulang secara bebas di SearchRequest
secara langsung. Parameter batasan filter berulang digabungkan menjadi kueri OR. Parameter atau grup batasan filter yang berbeda digabungkan menjadi kueri AND.
Contoh:
Untuk menelusuri "orang atau kota bernama Gore", coba:
query=gore &filter=(any type:/people/person type:/location/citytown)
Perilaku penggabungan ini dapat diganti dan dikontrol dengan lebih baik menggunakan parameter filter yang menawarkan antarmuka yang lebih kaya untuk menggabungkan batasan. Ini adalah ekspresi-s, yang mungkin disusun bertingkat secara arbitrer, dengan operatornya adalah salah satu dari:
any
, secara logis adalah ORall
, secara logis adalah ANDnot
should
, yang hanya dapat digunakan di tingkat teratas dan yang menunjukkan bahwa batasan bersifat opsional. Selama pemberian skor, kecocokan yang tidak cocok dengan batasan opsional akan dibagi dua skornya untuk setiap batasan opsional yang tidak cocok.
Contoh:
Untuk mencocokkan jenis /people/person
atau domain /film
, coba:
query=gore &filter=(any type:/people/person domain:/film)