Tổng quan
API Tìm kiếm cơ sở miễn phí cung cấp quyền truy cập vào dữ liệu Freebase khi được truy vấn văn bản miễn phí. Kết quả truy vấn được sắp xếp theo thứ tự và có điểm số về mức độ liên quan.
Nhà phát triển có thể áp dụng các bộ lọc để ràng buộc kết quả tìm kiếm đối với một số loại dữ liệu nhất định. Hãy xem Sách hướng dẫn tìm kiếm để biết thêm thông tin về cách tạo các cụm từ tìm kiếm chi tiết.
Một số ví dụ về cách nhà phát triển có thể muốn sử dụng API Tìm kiếm:
- Các thực thể tự động đề xuất (ví dụ: Tiện ích đề xuất cơ sở miễn phí)
- Nhận danh sách đã xếp hạng các thực thể đáng chú ý nhất có tên.
- Tìm các thực thể bằng cách sử dụng Search Metaschema.
Các mã mẫu sau đây bằng một số ngôn ngữ được hỗ trợ cho thấy cách tìm kiếm nghệ sĩ âm nhạc phù hợp với văn bản "Cee Lo Green". Điều kiện ràng buộc bổ sung là họ đã tạo ra một video có tên là "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'] }Ví dụ này sử dụng thư viện Httparty và Addressable.
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.min.js"></script> </head> <body><aside class="warning"><strong>Warning: </strong>The Freebase API will be retired on June 30, 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=?', params).done(function(response) { $.each(response.result, function(i, result) { $('<div>', {text:result['name']}).appendTo(document.body); }); }); </script> </body> </html>Ví dụ này sử dụng thư viện jQuery.
PHP
<!DOCTYPE html> <html> <body> <?php include('.freebase-api-key'); $service_url = 'https://www.googleapis.com/freebase/v1/search'; $params = array( 'query' => '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['result'] as $result) { echo $result['name'] . '<br/>'; } ?> </body> </html>
Ngoài ra, hãy xem trang Thư viện ứng dụng để xem ngôn ngữ bạn yêu thích có được hỗ trợ hay không.
Tìm tài liệu về API
Ngoài ra, hãy xem tài liệu sau:
- Hãy xem Tài liệu tham khảo về Tìm kiếm để biết thông tin chi tiết về cách sử dụng API.
- Hãy xem Sách hướng dẫn tìm kiếm để biết thêm thông tin về cách tạo các cụm từ tìm kiếm chi tiết.
- Hãy xem tài liệu về Tìm kiếm siêu dữ liệu để biết thông tin về cách mô tả mối quan hệ giữa các thực thể và các thuộc tính.
Lưu ý về bảo mật
API Tìm kiếm lập chỉ mục và tìm kiếm nội dung do người dùng tạo được lưu trữ trong biểu đồ Freebase. Điều này có nghĩa là bạn không thể trực tiếp sử dụng nội dung trên một trang web mà không thoát khỏi nội dung đó một cách an toàn trước.
Hãy xem Bắt đầu: Bảo mật để biết thêm thông tin.
Lọc nâng cao
API Tìm kiếm hỗ trợ một số lượng lớn các hạn chế về bộ lọc để nhắm mục tiêu tìm kiếm chính xác hơn vào các thực thể chính xác.
Ví dụ: sử dụng quy tắc ràng buộc bộ lọc "type", chúng tôi có thể hiển thị danh sách những người đáng chú ý nhất trong Freebase.
filter=(any type:/people/person)
Các hạn chế về bộ lọc chấp nhận nhiều dữ liệu đầu vào:
- Mã nhận dạng mà con người có thể đọc được cho các thực thể hoặc người dùng trong giản đồ, ví dụ:
/people/person
cho một hạn chế về loại/film
cho một hạn chế miền
- MID Freebase, ví dụ:
/m/01g317
cho cùng một hạn chế loại/people/person
/m/010s
cho điều kiện ràng buộc miền/film
ở trên
- Tên thực thể, ví dụ:
"person"
cho điều kiện ràng buộc loại/people/person
ít chính xác hơn"film"
cho hạn chế miền/film
chính xác hơn
Các hạn chế về bộ lọc có thể được phân loại thành một số danh mục. Hãy xem Tìm kiếm Sổ tay nấu ăn để biết thêm thông tin chi tiết.
Bạn có thể kết hợp và lặp lại các hạn chế của bộ lọc trực tiếp trong SearchRequest
. Các tham số ràng buộc của bộ lọc lặp lại được kết hợp thành một truy vấn OR. Các thông số ràng buộc khác nhau của nhóm hoặc nhóm bộ lọc được kết hợp thành một truy vấn AND.
Ví dụ:
Để tìm kiếm "người hoặc thành phố có tên Gore", hãy thử:
query=gore &filter=(any type:/people/person type:/location/citytown)
Hành vi kết hợp này có thể được ghi đè và kiểm soát tốt hơn bằng thông số bộ lọc, giúp cung cấp giao diện phong phú hơn để kết hợp các điều kiện ràng buộc. Biểu thức này là một biểu thức s, có thể được tuỳ ý lồng ghép, trong đó toán tử là một trong:
any
, theo hàm logic ORall
, theo hàm logic ANDnot
should
, chỉ có thể được sử dụng ở cấp cao nhất và biểu thị rằng điều kiện ràng buộc là không bắt buộc. Trong quá trình chấm điểm, các kết quả trùng khớp không khớp với các điều kiện ràng buộc không bắt buộc sẽ được chia một nửa cho mỗi quy tắc ràng buộc (không bắt buộc).
Ví dụ:
Để khớp trên loại /people/person
hoặc miền /film
, hãy thử:
query=gore &filter=(any type:/people/person domain:/film)