অনুসন্ধান ওভারভিউ

  1. ওভারভিউ
  2. নিরাপত্তা বিবেচনা
  3. উন্নত ফিল্টারিং

ওভারভিউ

Freebase অনুসন্ধান API একটি বিনামূল্যে পাঠ্য ক্যোয়ারী দেওয়া Freebase ডেটা অ্যাক্সেস প্রদান করে। প্রশ্নের ফলাফল অর্ডার করা হয় এবং একটি সংখ্যাসূচক প্রাসঙ্গিকতা স্কোর আছে.

বিকাশকারীরা নির্দিষ্ট ধরণের ডেটাতে অনুসন্ধানের ফলাফলগুলিকে সীমাবদ্ধ করতে ফিল্টার প্রয়োগ করতে পারে। কিভাবে বিস্তারিত অনুসন্ধান প্রশ্ন তৈরি করতে হয় সে সম্পর্কে আরও তথ্যের জন্য অনুসন্ধান কুকবুক দেখুন।

বিকাশকারীরা কীভাবে অনুসন্ধান API ব্যবহার করতে চাইতে পারে তার কিছু উদাহরণ অন্তর্ভুক্ত:

কয়েকটি সমর্থিত ভাষায় নিম্নলিখিত কোড নমুনাগুলি দেখায় যে কীভাবে একজন সঙ্গীত শিল্পীর জন্য অনুসন্ধান করতে হয় যা "সি লো গ্রিন" পাঠ্যের সাথে মেলে। একটি অতিরিক্ত সীমাবদ্ধতা হল তারা "দ্য লেডি কিলার" নামে কিছু তৈরি করেছে।

পাইথন

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']) + ')')

রুবি

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']
} 
এই উদাহরণটি Httparty এবং Addressable লাইব্রেরি ব্যবহার করে।

জাভা

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();
    }
  }
}

জাভাস্ক্রিপ্ট

<!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>
এই উদাহরণটি jQuery লাইব্রেরি ব্যবহার করে।

পিএইচপি

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

আপনার প্রিয় ভাষা সমর্থিত কিনা তা দেখতে ক্লায়েন্ট লাইব্রেরি পৃষ্ঠাটিও দেখুন।

API ডকুমেন্টেশন অনুসন্ধান করুন

এছাড়াও নিম্নলিখিত ডকুমেন্টেশন দেখুন:

নিরাপত্তা বিবেচনা

অনুসন্ধান এপিআই ফ্রিবেস গ্রাফে সংরক্ষিত ব্যবহারকারীর তৈরি সামগ্রী সূচী করে এবং অনুসন্ধান করে। এর মানে হল যে আপনি একটি ওয়েব পৃষ্ঠার বিষয়বস্তুকে প্রথমে নিরাপদে এড়িয়ে না গিয়ে সরাসরি ব্যবহার করতে পারবেন না।

আরও তথ্যের জন্য শুরু করা: নিরাপত্তা দেখুন।

উন্নত ফিল্টারিং

অনুসন্ধান API সঠিক সত্ত্বাগুলিতে অনুসন্ধানকে আরও ভালভাবে লক্ষ্য করার জন্য প্রচুর পরিমাণে ফিল্টার সীমাবদ্ধতা সমর্থন করে।

উদাহরণস্বরূপ, একটি "টাইপ" ফিল্টার সীমাবদ্ধতা ব্যবহার করে, আমরা ফ্রিবেসের সবচেয়ে উল্লেখযোগ্য ব্যক্তিদের একটি তালিকা দেখাতে পারি।

filter=(any type:/people/person)

ফিল্টার সীমাবদ্ধতা বিভিন্ন ধরনের ইনপুট গ্রহণ করে:

  • স্কিমা সত্তা বা ব্যবহারকারীদের জন্য মানুষের পঠনযোগ্য আইডি, উদাহরণস্বরূপ:
    • টাইপ সীমাবদ্ধতার জন্য /people/person
    • /film একটি ডোমেন সীমাবদ্ধতার জন্য
  • ফ্রিবেস MID, উদাহরণস্বরূপ:
    • /m/01g317 একই /people/person টাইপ সীমাবদ্ধতার জন্য
    • উপরের /film ডোমেন সীমাবদ্ধতার জন্য /m/010s
  • সত্তার নাম, উদাহরণস্বরূপ:
    • একটি কম সুনির্দিষ্ট /people/person টাইপ সীমাবদ্ধতার জন্য "person"
    • একটি কম সুনির্দিষ্ট /film ডোমেন সীমাবদ্ধতার জন্য "film"

ফিল্টার সীমাবদ্ধতা কয়েকটি বিভাগে শ্রেণীবদ্ধ করা যেতে পারে। আরো বিস্তারিত জানার জন্য অনুসন্ধান কুকবুক দেখুন.

ফিল্টার সীমাবদ্ধতা অবাধে একত্রিত করা যেতে পারে এবং সরাসরি SearchRequest এ পুনরাবৃত্তি করা যেতে পারে। পুনরাবৃত্ত ফিল্টার সীমাবদ্ধতা পরামিতিগুলি একটি OR ক্যোয়ারীতে একত্রিত হয়। বিভিন্ন ফিল্টার সীমাবদ্ধতা পরামিতি বা গোষ্ঠী একটি AND ক্যোয়ারীতে একত্রিত হয়।

উদাহরণ স্বরূপ:

" গোর নামের মানুষ বা শহর" অনুসন্ধান করতে, চেষ্টা করুন:

query=gore
&filter=(any type:/people/person type:/location/citytown)

এই সংমিশ্রণ আচরণটি ওভাররাইড করা যেতে পারে এবং ফিল্টার প্যারামিটারের সাথে আরও ভালভাবে নিয়ন্ত্রণ করা যেতে পারে যা সীমাবদ্ধতাগুলিকে একত্রিত করার জন্য একটি সমৃদ্ধ ইন্টারফেস সরবরাহ করে। এটি একটি s-এক্সপ্রেশন, সম্ভবত নির্বিচারে নেস্টেড, যেখানে অপারেটর হল:

  • any , যৌক্তিকভাবে একটি OR
  • all , যৌক্তিকভাবে একটি এবং
  • not
  • should , যা শুধুমাত্র উপরের স্তরে ব্যবহার করা যেতে পারে এবং যা বোঝায় যে সীমাবদ্ধতা ঐচ্ছিক। স্কোর করার সময়, যে ম্যাচগুলি ঐচ্ছিক সীমাবদ্ধতার সাথে মেলে না তাদের প্রতিটি ঐচ্ছিক সীমাবদ্ধতার জন্য তাদের স্কোর অর্ধেকে ভাগ করা হয় যা তারা মেলে না।

উদাহরণ স্বরূপ:

/people/person টাইপ বা /film ডোমেনে মেলে, চেষ্টা করুন:

query=gore
&filter=(any type:/people/person domain:/film)