{"id":37396,"date":"2026-01-03T02:40:57","date_gmt":"2026-01-02T23:40:57","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37396"},"modified":"2026-01-03T02:40:57","modified_gmt":"2026-01-02T23:40:57","slug":"algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/","title":{"rendered":"Algolia InstantSearch&#8217;\u00fc Vue.js ile Entegre Etmek: Kapsaml\u0131 Bir Rehber"},"content":{"rendered":"<p><body><\/p>\n<h2>Algolia InstantSearch&#8217;\u00fc Vue.js ile Entegre Etmek: Kapsaml\u0131 Bir Rehber<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, kullan\u0131c\u0131lar\u0131n arad\u0131klar\u0131 bilgilere veya \u00fcr\u00fcnlere h\u0131zl\u0131 ve verimli bir \u015fekilde ula\u015fabilmeleri, herhangi bir web uygulamas\u0131n\u0131n ba\u015far\u0131s\u0131 i\u00e7in kritik \u00f6neme sahiptir. Gecikmeli veya alakas\u0131z arama sonu\u00e7lar\u0131, kullan\u0131c\u0131 deneyimini olumsuz etkileyerek d\u00f6n\u00fc\u015f\u00fcm oranlar\u0131n\u0131 d\u00fc\u015f\u00fcrebilir. \u0130\u015fte tam da bu noktada, Algolia gibi g\u00fc\u00e7l\u00fc arama motorlar\u0131 devreye girer. Algolia, an\u0131nda ve alakal\u0131 arama sonu\u00e7lar\u0131 sunma konusunda sekt\u00f6r lideri \u00e7\u00f6z\u00fcmlerden biridir. Vue.js ise, reaktif yap\u0131s\u0131, bile\u015fen tabanl\u0131 mimarisi ve geli\u015ftirici dostu yakla\u015f\u0131m\u0131yla modern \u00f6n u\u00e7 geli\u015ftirmenin vazge\u00e7ilmez ara\u00e7lar\u0131ndan biri haline gelmi\u015ftir. Bu makalede, Algolia&#8217;n\u0131n InstantSearch k\u00fct\u00fcphanesini Vue.js projelerinize nas\u0131l entegre edece\u011finizi, temel kurulumdan geli\u015fmi\u015f \u00f6zelle\u015ftirmelere kadar ad\u0131m ad\u0131m inceleyece\u011fiz. Amac\u0131m\u0131z, h\u0131zl\u0131, esnek ve kullan\u0131c\u0131 dostu bir arama deneyimi olu\u015fturman\u0131z i\u00e7in size kapsaml\u0131 bir rehber sunmakt\u0131r.<\/p>\n<h3>Algolia ve InstantSearch&#8217;e Genel Bak\u0131\u015f<\/h3>\n<p>Algolia, i\u015fletmelerin web sitelerine ve mobil uygulamalar\u0131na y\u00fcksek performansl\u0131 arama yetenekleri eklemesini sa\u011flayan bir Arama-as-a-Service (SaaS) platformudur. Temel avantajlar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>H\u0131z:<\/strong> Algolia, milisaniyeler i\u00e7inde arama sonu\u00e7lar\u0131 sunar. Bu, kullan\u0131c\u0131n\u0131n yazarken bile an\u0131nda sonu\u00e7lar g\u00f6rmesini sa\u011flar.<\/li>\n<li><strong>Alaka D\u00fczeyi:<\/strong> Geli\u015fmi\u015f s\u0131ralama algoritmalar\u0131 ve \u00f6zelle\u015ftirilebilir alaka d\u00fczeyi ayarlar\u0131 sayesinde, kullan\u0131c\u0131lar\u0131n tam olarak arad\u0131klar\u0131n\u0131 bulmalar\u0131na yard\u0131mc\u0131 olur.<\/li>\n<li><strong>\u00d6l\u00e7eklenebilirlik:<\/strong> Y\u00fcksek trafikli uygulamalar i\u00e7in bile sorunsuz bir \u015fekilde \u00f6l\u00e7eklenebilir bir altyap\u0131 sunar.<\/li>\n<li><strong>Geli\u015ftirici Dostu API&#8217;ler:<\/strong> Kapsaml\u0131 ve iyi belgelenmi\u015f API&#8217;leri sayesinde entegrasyonu olduk\u00e7a kolayd\u0131r.<\/li>\n<li><strong>\u00c7ok Y\u00f6nl\u00fcl\u00fck:<\/strong> Tam metin arama, filtreleme, facet&#8217;ler, s\u0131ralama ve co\u011frafi arama gibi bir\u00e7ok geli\u015fmi\u015f \u00f6zelli\u011fi destekler.<\/li>\n<\/ul>\n<p><strong>InstantSearch<\/strong>, Algolia&#8217;n\u0131n aray\u00fcz (UI) k\u00fct\u00fcphanesidir. Geli\u015ftiricilerin, s\u0131f\u0131rdan bir arama UI&#8217;\u0131 olu\u015fturmak yerine, \u00f6nceden tan\u0131mlanm\u0131\u015f ve \u00f6zelle\u015ftirilebilir widget&#8217;lar kullanarak h\u0131zl\u0131ca zengin arama deneyimleri tasarlamas\u0131na olanak tan\u0131r. InstantSearch&#8217;\u00fcn temel \u00f6zellikleri:<\/p>\n<ul>\n<li><strong>Widget Tabanl\u0131 Mimari:<\/strong> Arama kutusu, sonu\u00e7 listesi, filtreler, sayfalama gibi temel arama UI elemanlar\u0131 widget olarak sunulur.<\/li>\n<li><strong>Durum Y\u00f6netimi:<\/strong> Arama sorgusu, filtreler, sayfa numaras\u0131 gibi arama durumunu otomatik olarak y\u00f6netir ve UI ile senkronize eder.<\/li>\n<li><strong>Framework Ba\u011f\u0131ms\u0131zl\u0131\u011f\u0131:<\/strong> InstantSearch.js \u00e7ekirdek k\u00fct\u00fcphanesi saf JavaScript ile yaz\u0131lm\u0131\u015ft\u0131r ve React, Vue, Angular gibi farkl\u0131 \u00f6n u\u00e7 framework&#8217;leri i\u00e7in \u00f6zel ba\u011fda\u015ft\u0131r\u0131c\u0131lar\u0131 (connectors) bulunur. Bu makalede Vue.js i\u00e7in olan <code>vue-instantsearch<\/code> k\u00fct\u00fcphanesini kullanaca\u011f\u0131z.<\/li>\n<li><strong>En \u0130yi Uygulamalar:<\/strong> Arama deneyimi i\u00e7in kan\u0131tlanm\u0131\u015f en iyi uygulamalar\u0131 (\u00f6rne\u011fin, debouncing, an\u0131nda sonu\u00e7lar) dahili olarak bar\u0131nd\u0131r\u0131r.<\/li>\n<\/ul>\n<p>InstantSearch kullanmak, geli\u015ftirme s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde k\u0131salt\u0131r, karma\u015f\u0131k arama mant\u0131\u011f\u0131n\u0131 soyutlar ve tutarl\u0131, y\u00fcksek kaliteli bir kullan\u0131c\u0131 deneyimi sunman\u0131z\u0131 sa\u011flar.<\/p>\n<h3>\u00d6n Ko\u015fullar ve Kurulum<\/h3>\n<p>Algolia InstantSearch&#8217;\u00fc Vue.js ile entegre etmeye ba\u015flamadan \u00f6nce baz\u0131 \u00f6n ko\u015fullar\u0131n yerine getirilmesi gerekmektedir.<\/p>\n<h4>Gerekli Bilgiler ve Ara\u00e7lar<\/h4>\n<ul>\n<li><strong>Vue.js Temelleri:<\/strong> Vue bile\u015fenleri, props, emit, v-model gibi temel kavramlara a\u015fina olmak.<\/li>\n<li><strong>JavaScript\/ES6:<\/strong> Modern JavaScript s\u00f6zdizimi bilgisi.<\/li>\n<li><strong>Node.js ve npm\/yarn:<\/strong> Paket y\u00f6neticileri ve JavaScript \u00e7al\u0131\u015fma zaman\u0131.<\/li>\n<li><strong>Algolia Hesab\u0131:<\/strong> \u00dccretsiz bir Algolia hesab\u0131 olu\u015fturman\u0131z gerekmektedir.<\/li>\n<\/ul>\n<h4>Algolia Hesab\u0131 Olu\u015fturma ve Uygulama Kurulumu<\/h4>\n<p>\u00d6ncelikle <a href=\"https:\/\/www.algolia.com\/users\/sign_up\">Algolia web sitesinden<\/a> \u00fccretsiz bir hesap olu\u015fturun. Hesap olu\u015fturduktan sonra bir &#8220;Application&#8221; olu\u015fturman\u0131z istenecektir. Uygulaman\u0131z olu\u015fturuldu\u011funda, Algolia kontrol panelinizde a\u015fa\u011f\u0131daki bilgilere eri\u015febileceksiniz:<\/p>\n<ul>\n<li><strong>Application ID:<\/strong> Uygulaman\u0131z\u0131n benzersiz tan\u0131mlay\u0131c\u0131s\u0131.<\/li>\n<li><strong>Admin API Key:<\/strong> \u0130ndekslerinizi y\u00f6netmek, veri eklemek\/silmek i\u00e7in kullan\u0131lan g\u00fc\u00e7l\u00fc bir anahtar. Bu anahtar\u0131 asla \u00f6n u\u00e7 kodunuzda kullanmay\u0131n!<\/li>\n<li><strong>Search-Only API Key:<\/strong> Yaln\u0131zca arama sorgular\u0131 yapmak i\u00e7in kullan\u0131lan, g\u00fcvenli bir anahtar. Bu anahtar\u0131 \u00f6n u\u00e7 uygulaman\u0131zda g\u00fcvenle kullanabilirsiniz.<\/li>\n<\/ul>\n<p>Bu anahtarlar, Algolia ile ileti\u015fim kurmak i\u00e7in projenizde kullan\u0131lacakt\u0131r.<\/p>\n<h4>Vue.js Projesi Olu\u015fturma<\/h4>\n<p>Yeni bir Vue.js projesi olu\u015fturmak i\u00e7in Vue CLI veya Vite kullanabilirsiniz. Vite, daha h\u0131zl\u0131 bir geli\u015ftirme deneyimi sundu\u011fu i\u00e7in tercih edilebilir.<\/p>\n<pre><code class=\"language-bash\"># Vite ile proje olu\u015fturma\nnpm create vue@latest\n<h2>Proje ad\u0131n\u0131 girin (\u00f6rne\u011fin: algolia-vue-app)<\/h2>\n<h2>TypeScript, Router, Pinia vb. se\u00e7enekleri iste\u011fe ba\u011fl\u0131 olarak se\u00e7in<\/h2>\n\ncd algolia-vue-app\nnpm install\n\n<h2>Veya Vue CLI ile (eski projeler i\u00e7in daha yayg\u0131n)<\/h2>\nnpm install -g @vue\/cli\nvue create algolia-vue-app\ncd algolia-vue-app\nnpm install\n<\/code><\/pre>\n<h4>Gerekli Paketlerin Kurulumu<\/h4>\n<p>Projenize Algolia InstantSearch ve Algolia JavaScript istemcisini eklememiz gerekiyor:<\/p>\n<pre><code class=\"language-bash\">npm install vue-instantsearch algoliasearch\n<h2>veya<\/h2>\nyarn add vue-instantsearch algoliasearch\n<\/code><\/pre>\n<ul>\n<li><code>vue-instantsearch<\/code>: Algolia InstantSearch&#8217;\u00fcn Vue.js ba\u011fda\u015ft\u0131r\u0131c\u0131s\u0131d\u0131r.<\/li>\n<li><code>algoliasearch<\/code>: Algolia API&#8217;si ile do\u011frudan etkile\u015fime girmek i\u00e7in kullan\u0131lan JavaScript istemcisidir (\u00f6zellikle indeksleme ve baz\u0131 geli\u015fmi\u015f senaryolar i\u00e7in).<\/li>\n<\/ul>\n<h3>Temel Entegrasyon<\/h3>\n<p>\u015eimdi Algolia indeksimizi olu\u015fturup verileri y\u00fckleyelim ve ard\u0131ndan Vue.js projemizde basit bir arama aray\u00fcz\u00fc olu\u015ftural\u0131m.<\/p>\n<h4>Algolia \u0130ndeksi Olu\u015fturma ve Veri Y\u00fckleme<\/h4>\n<p>Arama yapabilmek i\u00e7in \u00f6ncelikle Algolia&#8217;ya veri y\u00fcklemeniz gerekir. Bu \u00f6rnekte, basit \u00fcr\u00fcn verileri i\u00e7eren bir indeks olu\u015fturaca\u011f\u0131z. Algolia kontrol panelinden veya Algolia API&#8217;sini kullanarak veri y\u00fckleyebilirsiniz.<\/p>\n<p>\u00d6rnek \u00fcr\u00fcn verisi (<code>products.json<\/code>):<\/p>\n<pre><code class=\"language-json\">[\n  { \"objectID\": \"1\", \"name\": \"Ak\u0131ll\u0131 Telefon X\", \"description\": \"Y\u00fcksek performansl\u0131 ak\u0131ll\u0131 telefon.\", \"price\": 999, \"category\": \"Elektronik\", \"brand\": \"TechCo\" },\n  { \"objectID\": \"2\", \"name\": \"Kablosuz Kulakl\u0131k Pro\", \"description\": \"Kristal netli\u011finde ses kalitesi.\", \"price\": 199, \"category\": \"Elektronik\", \"brand\": \"AudioLux\" },\n  { \"objectID\": \"3\", \"name\": \"Ultra HD Monit\u00f6r 27 in\u00e7\", \"description\": \"Geni\u015f ekran ve canl\u0131 renkler.\", \"price\": 499, \"category\": \"Elektronik\", \"brand\": \"DisplayMax\" },\n  { \"objectID\": \"4\", \"name\": \"Ergonomik Ofis Koltu\u011fu\", \"description\": \"Uzun s\u00fcreli konfor i\u00e7in tasarland\u0131.\", \"price\": 249, \"category\": \"Mobilya\", \"brand\": \"ComfyWork\" },\n  { \"objectID\": \"5\", \"name\": \"Programlama Kitab\u0131: Vue.js\", \"description\": \"Vue.js \u00f6\u011frenmek i\u00e7in kapsaml\u0131 rehber.\", \"price\": 49, \"category\": \"Kitap\", \"brand\": \"DevBooks\" }\n]\n<\/code><\/pre>\n<p>Bu veriyi Algolia indeksinize y\u00fcklemek i\u00e7in Algolia CLI&#8217;y\u0131 kullanabiliriz:<\/p>\n<pre><code class=\"language-bash\"># Algolia CLI'y\u0131 kurun (e\u011fer kurulu de\u011filse)\nnpm install -g algolia\n<h2>Veya yarn global add algolia<\/h2>\n\n<h2>Veriyi y\u00fckleyin (Application ID, Admin API Key ve indeks ad\u0131n\u0131 kendi bilgilerinizle de\u011fi\u015ftirin)<\/h2>\nalgolia push products.json --application-id YOUR_APP_ID --api-key YOUR_ADMIN_API_KEY --index-name products\n<\/code><\/pre>\n<p><code>products<\/code> ad\u0131nda bir indeks olu\u015fturduk ve \u00f6rnek verilerimizi y\u00fckledik. Algolia kontrol panelinizde bu indeksi g\u00f6rebilirsiniz.<\/p>\n<h4><code>InstantSearch<\/code> Bile\u015fenini Yap\u0131land\u0131rma<\/h4>\n<p>Vue.js uygulaman\u0131z\u0131n ana bile\u015feninde (genellikle <code>App.vue<\/code>), Algolia InstantSearch&#8217;\u00fc yap\u0131land\u0131rmam\u0131z gerekiyor. Bunun i\u00e7in <code>vue-instantsearch<\/code> k\u00fct\u00fcphanesinden <code>InstantSearch<\/code> bile\u015fenini kullanaca\u011f\u0131z.<\/p>\n<p><code>App.vue<\/code> dosyan\u0131z\u0131 a\u015fa\u011f\u0131daki gibi g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-html\"><template>\n  <div id=\"app\">\n    <h1>Algolia Vue.js Arama Uygulamas\u0131<\/h1>\n    <!-- InstantSearch bile\u015feni, t\u00fcm arama UI'\u0131n\u0131 sarmalar -->\n    <ais-instant-search\n      :search-client=\"searchClient\"\n      index-name=\"products\"\n    >\n      <!-- Arama kutusu -->\n      <ais-search-box placeholder=\"\u00dcr\u00fcn ara...\" \/>\n\n      <!-- Arama sonu\u00e7lar\u0131 -->\n      <ais-hits>\n        <template v-slot=\"{ items }\">\n          <ul>\n            <li v-for=\"item in items\" :key=\"item.objectID\">\n              <h3>{{ item.name }}<\/h3>\n              <p>{{ item.description }}<\/p>\n              <p><strong>Fiyat:<\/strong> {{ item.price }} TL<\/p>\n              <p><strong>Kategori:<\/strong> {{ item.category }}<\/p>\n            <\/li>\n          <\/ul>\n        <\/template>\n      <\/ais-hits>\n    <\/ais-instant-search>\n  <\/div>\n<\/template>\n\n<script>\nimport algoliasearch from 'algoliasearch';\nimport { AisInstantSearch, AisSearchBox, AisHits } from 'vue-instantsearch\/vue3\/es'; \/\/ Vue 3 i\u00e7in es mod\u00fcl\u00fcn\u00fc kullan\u0131n\n\nexport default {\n  name: 'App',\n  components: {\n    AisInstantSearch,\n    AisSearchBox,\n    AisHits,\n  },\n  data() {\n    return {\n      \/\/ Algolia uygulama kimli\u011fi ve sadece arama anahtar\u0131\n      searchClient: algoliasearch(\n        'YOUR_APPLICATION_ID', \/\/ Kendi Application ID'nizi buraya yaz\u0131n\n        'YOUR_SEARCH_ONLY_API_KEY' \/\/ Kendi Search-Only API Key'inizi buraya yaz\u0131n\n      ),\n    };\n  },\n};\n<\/script>\n\n<style>\n#app {\n  font-family: Avenir, Helvetica, Arial, sans-serif;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  text-align: center;\n  color: #2c3e50;\n  margin-top: 60px;\n}\n\nul {\n  list-style: none;\n  padding: 0;\n}\n\nli {\n  border: 1px solid #eee;\n  margin-bottom: 10px;\n  padding: 15px;\n  border-radius: 5px;\n}\n\n.ais-SearchBox {\n  margin-bottom: 20px;\n}\n\n.ais-SearchBox-input {\n  padding: 10px;\n  width: 300px;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n<\/style>\n<\/code><\/pre>\n<p>Yukar\u0131daki kodda:<\/p>\n<ul>\n<li><code>AisInstantSearch<\/code> ana bile\u015fenidir. <code>search-client<\/code> prop&#8217;u ile Algolia istemcisini ve <code>index-name<\/code> prop&#8217;u ile arama yap\u0131lacak indeksi belirtiriz.<\/li>\n<li><code>algoliasearch<\/code> fonksiyonu, Algolia istemcisini olu\u015fturur. Buraya kendi <code>YOUR_APPLICATION_ID<\/code> ve <code>YOUR_SEARCH_ONLY_API_KEY<\/code> de\u011ferlerinizi girmeniz \u00e7ok \u00f6nemlidir.<\/li>\n<li><code>AisSearchBox<\/code>, kullan\u0131c\u0131lar\u0131n arama sorgusu girmesi i\u00e7in bir giri\u015f alan\u0131 sa\u011flar.<\/li>\n<li><code>AisHits<\/code>, arama sonu\u00e7lar\u0131n\u0131 listelemek i\u00e7in kullan\u0131l\u0131r. <code>v-slot=\"{ items }\"<\/code> yap\u0131s\u0131 ile arama sonu\u00e7lar\u0131na (<code>items<\/code> dizisi) eri\u015febilir ve bunlar\u0131 istedi\u011fimiz gibi render edebiliriz. Her bir \u00f6\u011fe i\u00e7in <code>objectID<\/code>&#8216;yi anahtar olarak kullanmak \u00f6nemlidir.<\/li>\n<\/ul>\n<p>Bu temel kurulum ile uygulaman\u0131z\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda (<code>npm run dev<\/code> veya <code>npm run serve<\/code>), bir arama kutusu ve alt\u0131nda Algolia indeksinizdeki \u00fcr\u00fcnlerin listesini g\u00f6receksiniz. Arama kutusuna bir \u015feyler yazd\u0131\u011f\u0131n\u0131zda, sonu\u00e7lar an\u0131nda filtrelenecektir.<\/p>\n<h3>Arama Deneyimini Zenginle\u015ftirme<\/h3>\n<p>Basit bir arama kutusu ve sonu\u00e7 listesi iyi bir ba\u015flang\u0131\u00e7t\u0131r, ancak kullan\u0131c\u0131lar\u0131n arama deneyimini daha da geli\u015ftirmek i\u00e7in filtreleme, s\u0131ralama ve sayfalama gibi \u00f6zellikler eklememiz gerekir. InstantSearch, bu t\u00fcr \u00f6zellikler i\u00e7in haz\u0131r widget&#8217;lar sunar.<\/p>\n<h4>Filtreleme ve Facet&#8217;ler<\/h4>\n<p>Facet&#8217;ler, kullan\u0131c\u0131lar\u0131n arama sonu\u00e7lar\u0131n\u0131 belirli \u00f6zelliklere (kategori, marka, fiyat aral\u0131\u011f\u0131 vb.) g\u00f6re daraltmalar\u0131na olanak tan\u0131yan g\u00fc\u00e7l\u00fc filtreleme mekanizmalar\u0131d\u0131r.<\/p>\n<p><code>App.vue<\/code> dosyan\u0131z\u0131 g\u00fcncelleyerek kategori ve marka filtreleri ekleyelim:<\/p>\n<pre><code class=\"language-html\"><template>\n  <div id=\"app\">\n    <h1>Algolia Vue.js Arama Uygulamas\u0131<\/h1>\n    <ais-instant-search\n      :search-client=\"searchClient\"\n      index-name=\"products\"\n    >\n      <div class=\"search-panel\">\n        <div class=\"search-panel__filters\">\n          <h3>Kategoriler<\/h3>\n          <ais-refinement-list attribute=\"category\" \/>\n\n          <h3>Markalar<\/h3>\n          <ais-refinement-list attribute=\"brand\" \/>\n\n          <h3>Fiyat Aral\u0131\u011f\u0131<\/h3>\n          <ais-range-slider attribute=\"price\" \/>\n        <\/div>\n\n        <div class=\"search-panel__results\">\n          <ais-search-box placeholder=\"\u00dcr\u00fcn ara...\" \/>\n\n          <ais-hits>\n            <template v-slot=\"{ items }\">\n              <ul>\n                <li v-for=\"item in items\" :key=\"item.objectID\">\n                  <h3>{{ item.name }}<\/h3>\n                  <p>{{ item.description }}<\/p>\n                  <p><strong>Fiyat:<\/strong> {{ item.price }} TL<\/p>\n                  <p><strong>Kategori:<\/strong> {{ item.category }}<\/p>\n                  <p><strong>Marka:<\/strong> {{ item.brand }}<\/p>\n                <\/li>\n              <\/ul>\n            <\/template>\n          <\/ais-hits>\n\n          <ais-pagination \/>\n        <\/div>\n      <\/div>\n    <\/ais-instant-search>\n  <\/div>\n<\/template>\n\n<script>\nimport algoliasearch from 'algoliasearch';\nimport {\n  AisInstantSearch,\n  AisSearchBox,\n  AisHits,\n  AisRefinementList,\n  AisRangeSlider,\n  AisPagination,\n} from 'vue-instantsearch\/vue3\/es';\n\nexport default {\n  name: 'App',\n  components: {\n    AisInstantSearch,\n    AisSearchBox,\n    AisHits,\n    AisRefinementList,\n    AisRangeSlider,\n    AisPagination,\n  },\n  data() {\n    return {\n      searchClient: algoliasearch(\n        'YOUR_APPLICATION_ID',\n        'YOUR_SEARCH_ONLY_API_KEY'\n      ),\n    };\n  },\n};\n<\/script>\n\n<style>\n\/<em> ... \u00f6nceki stiller ... <\/em>\/\n\n.search-panel {\n  display: flex;\n  text-align: left;\n  max-width: 1200px;\n  margin: 0 auto;\n}\n\n.search-panel__filters {\n  flex: 0 0 250px;\n  padding: 20px;\n  border-right: 1px solid #eee;\n}\n\n.search-panel__results {\n  flex: 1;\n  padding: 20px;\n}\n\n.ais-RefinementList-list {\n  list-style: none;\n  padding: 0;\n}\n\n.ais-RefinementList-item {\n  margin-bottom: 5px;\n}\n\n.ais-RefinementList-label {\n  display: flex;\n  align-items: center;\n  cursor: pointer;\n}\n\n.ais-RefinementList-checkbox {\n  margin-right: 8px;\n}\n\n.ais-RangeSlider {\n  margin-top: 15px;\n  margin-bottom: 25px;\n}\n\/<em> ... AisPagination i\u00e7in stiller ekleyebilirsiniz ... <\/em>\/\n<\/style>\n<\/code><\/pre>\n<ul>\n<li><code>AisRefinementList<\/code>: Belirli bir \u00f6zniteli\u011fe (<code>attribute<\/code> prop&#8217;u ile belirtilir) g\u00f6re liste tabanl\u0131 filtreler olu\u015fturur. Kullan\u0131c\u0131lar, kategoriler veya markalar gibi se\u00e7enekleri i\u015faretleyerek sonu\u00e7lar\u0131 daraltabilir.<\/li>\n<li><code>AisRangeSlider<\/code>: Say\u0131sal \u00f6znitelikler (\u00f6rne\u011fin fiyat) i\u00e7in bir aral\u0131k kayd\u0131r\u0131c\u0131s\u0131 olu\u015fturur. Kullan\u0131c\u0131lar minimum ve maksimum de\u011ferleri ayarlayarak sonu\u00e7lar\u0131 filtreleyebilir.<\/li>\n<\/ul>\n<p>Bu widget&#8217;lar\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015fmas\u0131 i\u00e7in, Algolia indeksinizde bu \u00f6zniteliklerin &#8220;Facets&#8221; olarak yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131ndan emin olmal\u0131s\u0131n\u0131z. Algolia kontrol panelinizde indeksinizi se\u00e7ip &#8220;Configuration&#8221; -> &#8220;Facets&#8221; b\u00f6l\u00fcm\u00fcnden bu ayar\u0131 yapabilirsiniz.<\/p>\n<h4>S\u0131ralama (Sorting)<\/h4>\n<p>Kullan\u0131c\u0131lar\u0131n arama sonu\u00e7lar\u0131n\u0131 farkl\u0131 kriterlere g\u00f6re (\u00f6rne\u011fin fiyata g\u00f6re artan\/azalan, en yeniler) s\u0131ralamas\u0131na olanak tan\u0131mak \u00f6nemlidir.<\/p>\n<p>Algolia&#8217;da s\u0131ralama i\u00e7in &#8220;Replica \u0130ndeksler&#8221; kullan\u0131l\u0131r. Birincil indeksinizin farkl\u0131 s\u0131ralama kurallar\u0131na sahip kopyalar\u0131n\u0131 olu\u015fturursunuz. \u00d6rne\u011fin, <code>products<\/code> indeksiniz i\u00e7in <code>products_price_asc<\/code> (fiyata g\u00f6re artan) ve <code>products_price_desc<\/code> (fiyata g\u00f6re azalan) ad\u0131nda replica indeksler olu\u015fturabilirsiniz. Bu ayarlar\u0131 Algolia kontrol panelinizden yapman\u0131z gerekir.<\/p>\n<p>Vue.js uygulaman\u0131za s\u0131ralama se\u00e7ene\u011fini eklemek i\u00e7in <code>AisSortBy<\/code> bile\u015fenini kullan\u0131n:<\/p>\n<pre><code class=\"language-html\"><template>\n  <!-- ... \u00f6nceki kod ... -->\n  <div class=\"search-panel__results\">\n    <div class=\"search-header\">\n      <ais-search-box placeholder=\"\u00dcr\u00fcn ara...\" \/>\n      <ais-sort-by\n        :items=\"[\n          { value: 'products', label: 'Alaka D\u00fczeyi' },\n          { value: 'products_price_asc', label: 'Fiyat (Artan)' },\n          { value: 'products_price_desc', label: 'Fiyat (Azalan)' },\n        ]\"\n      \/>\n    <\/div>\n    <!-- ... AisHits ve AisPagination ... -->\n  <\/div>\n  <!-- ... \u00f6nceki kod ... -->\n<\/template>\n\n<script>\nimport {\n  \/\/ ... di\u011fer bile\u015fenler ...\n  AisSortBy,\n} from 'vue-instantsearch\/vue3\/es';\n\nexport default {\n  \/\/ ...\n  components: {\n    \/\/ ...\n    AisSortBy,\n  },\n  \/\/ ...\n};\n<\/script>\n\n<style>\n\/<em> ... \u00f6nceki stiller ... <\/em>\/\n.search-header {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-bottom: 20px;\n}\n<\/style>\n<\/code><\/pre>\n<p><code>AisSortBy<\/code> bile\u015feninin <code>items<\/code> prop&#8217;una, s\u0131ralama se\u00e7eneklerini ve bunlara kar\u015f\u0131l\u0131k gelen indeks adlar\u0131n\u0131 (birincil indeks veya replica indeks) i\u00e7eren bir dizi veririz.<\/p>\n<h4>Sayfalama (Pagination)<\/h4>\n<p>\u00c7ok say\u0131da arama sonucu oldu\u011funda, bunlar\u0131 birden fazla sayfaya b\u00f6lmek kullan\u0131c\u0131 deneyimi i\u00e7in kritiktir. <code>AisPagination<\/code> bile\u015feni bunu kolayca sa\u011flar.<\/p>\n<pre><code class=\"language-html\"><template>\n  <!-- ... -->\n  <div class=\"search-panel__results\">\n    <!-- ... AisSearchBox, AisSortBy, AisHits ... -->\n    <ais-pagination \/> <!-- Sonu\u00e7lar\u0131n alt\u0131na ekleyin -->\n  <\/div>\n  <!-- ... -->\n<\/template>\n\n<script>\nimport {\n  \/\/ ... di\u011fer bile\u015fenler ...\n  AisPagination,\n} from 'vue-instantsearch\/vue3\/es';\n\nexport default {\n  \/\/ ...\n  components: {\n    \/\/ ...\n    AisPagination,\n  },\n  \/\/ ...\n};\n<\/script>\n<\/code><\/pre>\n<p><code>AisPagination<\/code> herhangi bir prop almadan varsay\u0131lan olarak \u00e7al\u0131\u015f\u0131r, ancak <code>padding<\/code>, <code>total-pages<\/code> gibi prop&#8217;larla \u00f6zelle\u015ftirilebilir.<\/p>\n<h4>An\u0131nda Arama ve \u00d6neriler (Autocomplete)<\/h4>\n<p>Algolia&#8217;n\u0131n en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biri an\u0131nda arama ve otomatik tamamlama yetenekleridir. InstantSearch&#8217;\u00fcn <code>AisSearchBox<\/code>&#8216;\u0131 varsay\u0131lan olarak an\u0131nda arama yapar. Daha geli\u015fmi\u015f otomatik tamamlama i\u00e7in, <code>AisSearchBox<\/code>&#8216;\u0131 kendi \u00f6zel bile\u015feninizle birle\u015ftirmeniz gerekebilir veya <code>connectors<\/code> kullanarak tamamen \u00f6zel bir \u00e7\u00f6z\u00fcm olu\u015fturabilirsiniz.<\/p>\n<p>Basit bir \u00f6neri listesi i\u00e7in <code>AisSearchBox<\/code>&#8216;\u0131n alt\u0131na bir <code>AisHits<\/code> daha ekleyip, bunu farkl\u0131 bir indeks veya farkl\u0131 bir arama parametresiyle yap\u0131land\u0131rabilirsiniz. Ancak bu, genellikle <code>connectors<\/code> ile daha esnek bir \u015fekilde yap\u0131l\u0131r.<\/p>\n<h4>Bo\u015f Durumlar (No Results)<\/h4>\n<p>Arama sonu\u00e7lar\u0131n\u0131n bulunamad\u0131\u011f\u0131 durumlar i\u00e7in kullan\u0131c\u0131ya bilgilendirici bir mesaj g\u00f6stermek \u00f6nemlidir. <code>AisHits<\/code> bile\u015feni bunun i\u00e7in bir slot sunar.<\/p>\n<pre><code class=\"language-html\"><ais-hits>\n  <template v-slot=\"{ items }\">\n    <ul v-if=\"items.length\">\n      <li v-for=\"item in items\" :key=\"item.objectID\">\n        <h3>{{ item.name }}<\/h3>\n        <p>{{ item.description }}<\/p>\n      <\/li>\n    <\/ul>\n    <div v-else>\n      <p>Arad\u0131\u011f\u0131n\u0131z kriterlere uygun sonu\u00e7 bulunamad\u0131.<\/p>\n    <\/div>\n  <\/template>\n<\/ais-hits>\n<\/code><\/pre>\n<h3>Geli\u015fmi\u015f Konular ve \u00d6zelle\u015ftirme<\/h3>\n<p>InstantSearch&#8217;\u00fcn sundu\u011fu haz\u0131r widget&#8217;lar \u00e7o\u011fu senaryo i\u00e7in yeterli olsa da, bazen \u00f6zel bir UI veya daha ince ayarl\u0131 bir kontrol gerekebilir. \u0130\u015fte bu noktada geli\u015fmi\u015f \u00f6zellikler devreye girer.<\/p>\n<h4>\u00d6zel Bile\u015fenler Olu\u015fturma: Connectors Kullan\u0131m\u0131<\/h4>\n<p>InstantSearch, UI&#8217;dan ba\u011f\u0131ms\u0131z bir arama mant\u0131\u011f\u0131 katman\u0131na sahiptir. Bu katmanla etkile\u015fim kurmak i\u00e7in &#8220;connectors&#8221; ad\u0131 verilen fonksiyonlar sa\u011flar. Connectors, InstantSearch&#8217;\u00fcn dahili durumuna eri\u015fmenizi ve kendi \u00f6zel Vue bile\u015fenlerinizi olu\u015fturman\u0131z\u0131 sa\u011flar.<\/p>\n<p>\u00d6rne\u011fin, basit bir <code>AisSearchBox<\/code> yerine kendi arama kutusu bile\u015fenimizi olu\u015fturmak isteyebiliriz:<\/p>\n<pre><code class=\"language-javascript\">\/\/ components\/CustomSearchBox.vue\nimport { connectSearchBox } from 'instantsearch.js\/es\/connectors';\n\nexport default {\n  name: 'CustomSearchBox',\n  \/\/ connectSearchBox fonksiyonunu kullanarak bir InstantSearch bile\u015feni olu\u015ftururuz.\n  \/\/ Bu, searchClient ve indexName props'lar\u0131n\u0131 otomatik olarak al\u0131r.\n  \/\/ connectSearchBox, bir render fonksiyonu d\u00f6nd\u00fcr\u00fcr.\n  \/\/ Biz bu render fonksiyonunu bir Vue mixini gibi kullan\u0131yoruz.\n  mixins: [connectSearchBox],\n  props: {\n    placeholder: {\n      type: String,\n      default: 'Ara...',\n    },\n  },\n  computed: {\n    \/\/ state.query, anl\u0131k arama sorgusunu tutar.\n    \/\/ state.refine, arama sorgusunu g\u00fcncellemek i\u00e7in kullan\u0131l\u0131r.\n    currentQuery: {\n      get() {\n        return this.state.query;\n      },\n      set(value) {\n        this.state.refine(value);\n      },\n    },\n  },\n  template: <code>\n    <input\n      type=\"search\"\n      :placeholder=\"placeholder\"\n      v-model=\"currentQuery\"\n      class=\"custom-search-box-input\"\n    \/>\n  <\/code>,\n};\n<\/code><\/pre>\n<p>Daha sonra bu \u00f6zel bile\u015feni <code>App.vue<\/code> i\u00e7inde kullanabiliriz:<\/p>\n<pre><code class=\"language-html\"><template>\n  <div id=\"app\">\n    <h1>Algolia Vue.js Arama Uygulamas\u0131<\/h1>\n    <ais-instant-search\n      :search-client=\"searchClient\"\n      index-name=\"products\"\n    >\n      <!-- \u00d6zel arama kutumuzu kullan\u0131yoruz -->\n      <CustomSearchBox placeholder=\"\u00d6zel arama kutusu...\" \/>\n      <!-- ... di\u011fer widget'lar ... -->\n    <\/ais-instant-search>\n  <\/div>\n<\/template>\n\n<script>\nimport algoliasearch from 'algoliasearch';\nimport { AisInstantSearch, AisHits } from 'vue-instantsearch\/vue3\/es';\nimport CustomSearchBox from '.\/components\/CustomSearchBox.vue'; \/\/ Yeni bile\u015fenimizi import ediyoruz\n\nexport default {\n  name: 'App',\n  components: {\n    AisInstantSearch,\n    AisHits,\n    CustomSearchBox, \/\/ Bile\u015fenlerimize ekliyoruz\n  },\n  data() {\n    return {\n      searchClient: algoliasearch(\n        'YOUR_APPLICATION_ID',\n        'YOUR_SEARCH_ONLY_API_KEY'\n      ),\n    };\n  },\n};\n<\/script>\n<\/code><\/pre>\n<p><code>connectSearchBox<\/code> gibi di\u011fer connectors (<code>connectHits<\/code>, <code>connectRefinementList<\/code> vb.) de benzer \u015fekilde \u00e7al\u0131\u015f\u0131r. Bu yakla\u015f\u0131m, InstantSearch&#8217;\u00fcn g\u00fcc\u00fcnden yararlan\u0131rken UI \u00fczerinde tam kontrol sahibi olman\u0131z\u0131 sa\u011flar.<\/p>\n<h4>URL Senkronizasyonu (Routing)<\/h4>\n<p>Kullan\u0131c\u0131lar\u0131n arama durumunu (sorgu, filtreler, sayfa numaras\u0131) URL&#8217;de yans\u0131tmak, payla\u015f\u0131lebilir arama sonu\u00e7lar\u0131 ve taray\u0131c\u0131 ge\u00e7mi\u015fi entegrasyonu i\u00e7in \u00f6nemlidir. InstantSearch, bu \u00f6zelli\u011fi <code>routing<\/code> prop&#8217;u arac\u0131l\u0131\u011f\u0131yla kolayca sa\u011flar.<\/p>\n<p><code>vue-router<\/code> ile entegrasyon i\u00e7in a\u015fa\u011f\u0131daki gibi bir yap\u0131 kullanabilirsiniz:<\/p>\n<pre><code class=\"language-javascript\">\/\/ main.js veya router\/index.js i\u00e7inde\nimport { createRouter, createWebHistory } from 'vue-router';\n\nconst router = createRouter({\n  history: createWebHistory(),\n  routes: [\n    {\n      path: '\/',\n      name: 'home',\n      component: () => import('.\/App.vue'), \/\/ Ana arama bile\u015feninizin oldu\u011fu yer\n    },\n  ],\n});\n\nexport default router;\n<\/code><\/pre>\n<p>Ard\u0131ndan <code>App.vue<\/code> i\u00e7inde <code>routing<\/code> prop&#8217;unu ayarlay\u0131n:<\/p>\n<pre><code class=\"language-html\"><template>\n  <div id=\"app\">\n    <h1>Algolia Vue.js Arama Uygulamas\u0131<\/h1>\n    <ais-instant-search\n      :search-client=\"searchClient\"\n      index-name=\"products\"\n      :routing=\"routing\" <!-- Buray\u0131 ekleyin -->\n    >\n      <!-- ... widget'lar ... -->\n    <\/ais-instant-search>\n  <\/div>\n<\/template>\n\n<script>\nimport algoliasearch from 'algoliasearch';\nimport { AisInstantSearch, AisSearchBox, AisHits, AisRefinementList, AisRangeSlider, AisPagination, AisSortBy } from 'vue-instantsearch\/vue3\/es';\nimport { history as historyRouter } from 'instantsearch.js\/es\/lib\/routers'; \/\/ instantsearch.js'den router'\u0131 import edin\nimport { simple as simpleMapping } from 'instantsearch.js\/es\/lib\/stateMappings'; \/\/ stateMapping'i import edin\n\nexport default {\n  name: 'App',\n  components: {\n    AisInstantSearch,\n    AisSearchBox,\n    AisHits,\n    AisRefinementList,\n    AisRangeSlider,\n    AisPagination,\n    AisSortBy,\n  },\n  data() {\n    return {\n      searchClient: algoliasearch(\n        'YOUR_APPLICATION_ID',\n        'YOUR_SEARCH_ONLY_API_KEY'\n      ),\n      routing: {\n        router: historyRouter(), \/\/ Taray\u0131c\u0131 ge\u00e7mi\u015fi ile senkronizasyon\n        stateMapping: simpleMapping(), \/\/ Basit URL parametreleri olu\u015fturur\n      },\n    };\n  },\n};\n<\/script>\n<\/code><\/pre>\n<p>Art\u0131k arama sorgunuz, filtreleriniz ve sayfa numaran\u0131z URL&#8217;de g\u00f6r\u00fcnecek ve taray\u0131c\u0131 geri\/ileri d\u00fc\u011fmeleriyle \u00e7al\u0131\u015facakt\u0131r.<\/p>\n<h4>Performans Optimizasyonlar\u0131<\/h4>\n<p>Algolia ve InstantSearch, do\u011falar\u0131 gere\u011fi h\u0131zl\u0131d\u0131r, ancak b\u00fcy\u00fck \u00f6l\u00e7ekli uygulamalarda ek optimizasyonlar d\u00fc\u015f\u00fcnebilirsiniz:<\/p>\n<ul>\n<li><strong>Debouncing:<\/strong> InstantSearch, arama kutusu giri\u015fleri i\u00e7in dahili olarak debouncing uygular, bu da her tu\u015f vuru\u015funda API \u00e7a\u011fr\u0131s\u0131 yap\u0131lmas\u0131n\u0131 engeller. Genellikle bu konuda endi\u015felenmenize gerek yoktur.<\/li>\n<li><strong>Lazy Y\u00fckleme (Lazy Loading):<\/strong> E\u011fer arama UI&#8217;\u0131n\u0131z uygulaman\u0131z\u0131n ana giri\u015f noktas\u0131 de\u011filse, InstantSearch bile\u015fenlerini ve ilgili verileri sadece ihtiya\u00e7 duyuldu\u011funda y\u00fckleyerek ba\u015flang\u0131\u00e7 performans\u0131n\u0131 art\u0131rabilirsiniz. Vue&#8217;nin dinamik import \u00f6zelli\u011fi (<code>import()<\/code>) ile bu yap\u0131labilir.<\/li>\n<li><strong>Sunucu Taraf\u0131 Olu\u015fturma (SSR):<\/strong> Nuxt.js gibi bir framework kullan\u0131yorsan\u0131z, InstantSearch&#8217;\u00fc SSR ile entegre ederek ilk sayfa y\u00fcklemesinde arama sonu\u00e7lar\u0131n\u0131 do\u011frudan HTML&#8217;e g\u00f6mebilirsiniz. Bu, SEO ve ba\u015flang\u0131\u00e7 performans\u0131 i\u00e7in faydal\u0131d\u0131r. <code>vue-instantsearch<\/code>, Nuxt.js i\u00e7in \u00f6zel bir mod\u00fcl sunar.<\/li>\n<\/ul>\n<h4>Uluslararas\u0131la\u015fma (i18n)<\/h4>\n<p>Arama UI&#8217;\u0131n\u0131z\u0131n farkl\u0131 dillerde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in <code>translations<\/code> prop&#8217;unu kullanabilirsiniz. Bu prop, InstantSearch widget&#8217;lar\u0131n\u0131n metinlerini \u00f6zelle\u015ftirmenize olanak tan\u0131r.<\/p>\n<pre><code class=\"language-html\"><ais-search-box\n  placeholder=\"\u00dcr\u00fcn ara...\"\n  :translations=\"{\n    submitButtonTitle: 'G\u00f6nder',\n    resetButtonTitle: 'S\u0131f\u0131rla',\n    \/\/ Di\u011fer \u00e7eviriler...\n  }\"\n\/>\n<\/code><\/pre>\n<p>Her widget&#8217;\u0131n kendi <code>translations<\/code> prop&#8217;u vard\u0131r ve hangi metinlerin \u00e7evrilebilece\u011fi belgelerinde belirtilmi\u015ftir.<\/p>\n<h4>\u00c7oklu \u0130ndeks Arama (Multi-Index Search)<\/h4>\n<p>Birden fazla Algolia indeksinde ayn\u0131 anda arama yapmak isteyebilirsiniz (\u00f6rne\u011fin, \u00fcr\u00fcnler, blog yaz\u0131lar\u0131 ve belgeler). InstantSearch bu senaryoyu da destekler.<\/p>\n<p>Bunu yapman\u0131n birka\u00e7 yolu vard\u0131r:<\/p>\n<ul>\n<li><strong>Birden Fazla <code>ais-instant-search<\/code> Bile\u015feni:<\/strong> Her indeks i\u00e7in ayr\u0131 bir <code>ais-instant-search<\/code> bile\u015feni kullanabilirsiniz. Bu, her indeksin kendi arama kutusuna ve filtrelerine sahip olmas\u0131n\u0131 istedi\u011finizde kullan\u0131\u015fl\u0131d\u0131r.<\/li>\n<li><strong><code>ais-instant-search-manager<\/code> (Daha Geli\u015fmi\u015f):<\/strong> E\u011fer tek bir arama kutusuyla birden fazla indekste arama yapmak ve sonu\u00e7lar\u0131 birle\u015ftirmek istiyorsan\u0131z, <code>instantsearch.js<\/code>&#8216;den <code>InstantSearchManager<\/code>&#8216;\u0131 kullanarak \u00f6zel bir \u00e7\u00f6z\u00fcm olu\u015fturman\u0131z gerekebilir. Bu, daha karma\u015f\u0131k bir yap\u0131land\u0131rma gerektirir ve genellikle <code>connectors<\/code> ile birlikte kullan\u0131l\u0131r.<\/li>\n<\/ul>\n<p>\u00d6rnek olarak, ayr\u0131 ayr\u0131 arama alanlar\u0131 i\u00e7in:<\/p>\n<pre><code class=\"language-html\"><template>\n  <div id=\"app\">\n    <h2>\u00dcr\u00fcn Aramas\u0131<\/h2>\n    <ais-instant-search :search-client=\"searchClient\" index-name=\"products\">\n      <ais-search-box \/>\n      <ais-hits \/>\n    <\/ais-instant-search>\n\n    <h2>Blog Yaz\u0131s\u0131 Aramas\u0131<\/h2>\n    <ais-instant-search :search-client=\"searchClient\" index-name=\"blog_posts\">\n      <ais-search-box \/>\n      <ais-hits>\n        <template v-slot=\"{ items }\">\n          <ul>\n            <li v-for=\"item in items\" :key=\"item.objectID\">\n              <h4>{{ item.title }}<\/h4>\n              <p>{{ item.excerpt }}<\/p>\n            <\/li>\n          <\/ul>\n        <\/template>\n      <\/ais-hits>\n    <\/ais-instant-search>\n  <\/div>\n<\/template>\n<\/code><\/pre>\n<p>Bu yakla\u015f\u0131m, farkl\u0131 indeksler i\u00e7in tamamen ba\u011f\u0131ms\u0131z arama deneyimleri olu\u015fturman\u0131za olanak tan\u0131r.<\/p>\n<h3>Yayg\u0131n Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h3>\n<ul>\n<li>\n        <strong>API Anahtarlar\u0131 G\u00fcvenli\u011fi:<\/strong><\/p>\n<ul>\n<li><strong>Sorun:<\/strong> <code>Admin API Key<\/code>&#8216;i \u00f6n u\u00e7 kodunda kullanmak. Bu anahtar, indekslerinizi tamamen de\u011fi\u015ftirebilir ve k\u00f6t\u00fc niyetli ki\u015filer taraf\u0131ndan k\u00f6t\u00fcye kullan\u0131labilir.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong> \u00d6n u\u00e7 uygulaman\u0131zda her zaman <code>Search-Only API Key<\/code>&#8216;i kullan\u0131n. <code>Admin API Key<\/code>&#8216;i yaln\u0131zca sunucu taraf\u0131 uygulamalar\u0131n\u0131zda veya Algolia CLI gibi ara\u00e7larla kullan\u0131n.<\/li>\n<\/ul>\n<\/li>\n<li>\n        <strong>\u0130ndeksleme Sorunlar\u0131:<\/strong><\/p>\n<ul>\n<li><strong>Sorun:<\/strong> Arama sonu\u00e7lar\u0131 bekledi\u011finiz gibi de\u011fil veya baz\u0131 veriler g\u00f6r\u00fcnm\u00fcyor.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong> Algolia kontrol panelinizde indeksinizin &#8220;Browse&#8221; sekmesini kontrol edin. Verilerinizin do\u011fru y\u00fcklendi\u011finden ve <code>objectID<\/code> alan\u0131n\u0131n benzersiz oldu\u011fundan emin olun. Ayr\u0131ca, &#8220;Configuration&#8221; sekmesindeki &#8220;Searchable Attributes&#8221; ve &#8220;Facets&#8221; ayarlar\u0131n\u0131 kontrol edin.<\/li>\n<\/ul>\n<\/li>\n<li>\n        <strong>Performans Darbo\u011fazlar\u0131:<\/strong><\/p>\n<ul>\n<li><strong>Sorun:<\/strong> Uygulama yava\u015f hissediliyor, \u00f6zellikle \u00e7ok say\u0131da widget veya b\u00fcy\u00fck veri k\u00fcmeleriyle.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong> Algolia&#8217;n\u0131n kendisi \u00e7ok h\u0131zl\u0131d\u0131r. Performans sorunlar\u0131 genellikle \u00f6n u\u00e7 render etme veya \u00e7ok fazla DOM manip\u00fclasyonundan kaynaklan\u0131r. Gerekirse lazy loading uygulay\u0131n. \u00c7ok say\u0131da facet varsa, <code>showMore<\/code> \u00f6zelli\u011fini kullanarak hepsini birden g\u00f6stermek yerine &#8220;Daha Fazla G\u00f6ster&#8221; se\u00e7ene\u011fi sunun.<\/li>\n<\/ul>\n<\/li>\n<li>\n        <strong>Stil \u00c7ak\u0131\u015fmalar\u0131:<\/strong><\/p>\n<ul>\n<li><strong>Sorun:<\/strong> InstantSearch widget&#8217;lar\u0131n\u0131n varsay\u0131lan stilleri uygulaman\u0131z\u0131n genel g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc bozuyor.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong> InstantSearch widget&#8217;lar\u0131, kendi CSS s\u0131n\u0131flar\u0131yla birlikte gelir (\u00f6rne\u011fin, <code>.ais-SearchBox-input<\/code>). Bu s\u0131n\u0131flar\u0131 kullanarak widget&#8217;lar\u0131 kendi tasar\u0131m\u0131n\u0131za g\u00f6re \u00f6zelle\u015ftirebilirsiniz. Ayr\u0131ca, \u00f6zel bile\u015fenler olu\u015fturmak i\u00e7in connectors kullanmak, UI \u00fczerinde tam kontrol sa\u011flar.<\/li>\n<\/ul>\n<\/li>\n<li>\n        <strong>Vue 2 vs Vue 3:<\/strong><\/p>\n<ul>\n<li><strong>Sorun:<\/strong> <code>vue-instantsearch<\/code> import hatas\u0131.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong> Vue 3 kullan\u0131yorsan\u0131z, <code>vue-instantsearch\/vue3\/es<\/code> veya <code>vue-instantsearch\/vue3\/cjs<\/code> yolunu kullanmal\u0131s\u0131n\u0131z. Vue 2 i\u00e7in <code>vue-instantsearch\/vue2\/es<\/code> veya <code>vue-instantsearch\/vue2\/cjs<\/code> kullan\u0131l\u0131r. Bu makaledeki \u00f6rnekler Vue 3 i\u00e7indir.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Sonu\u00e7<\/h3>\n<p>Algolia InstantSearch ve Vue.js entegrasyonu, modern web uygulamalar\u0131 i\u00e7in h\u0131zl\u0131, esnek ve kullan\u0131c\u0131 dostu arama deneyimleri olu\u015fturman\u0131n g\u00fc\u00e7l\u00fc bir yolunu sunar. Bu makalede, Algolia hesab\u0131n\u0131z\u0131 olu\u015fturmaktan, veri indekslemeye, temel arama aray\u00fczleri kurmaya ve filtreleme, s\u0131ralama, sayfalama gibi geli\u015fmi\u015f \u00f6zellikleri entegre etmeye kadar t\u00fcm s\u00fcreci ad\u0131m ad\u0131m ele ald\u0131k. Ayr\u0131ca, \u00f6zel bile\u015fenler olu\u015fturma, URL senkronizasyonu ve performans optimizasyonlar\u0131 gibi daha ileri konulara da de\u011findik.<\/p>\n<p><code>vue-instantsearch<\/code> k\u00fct\u00fcphanesi, Algolia&#8217;n\u0131n karma\u015f\u0131k arama mant\u0131\u011f\u0131n\u0131 soyutlayarak geli\u015ftiricilere bile\u015fen tabanl\u0131, reaktif bir aray\u00fcz sunar. Bu sayede, geli\u015ftiriciler kullan\u0131c\u0131 deneyimine odaklanabilirken, arama motorunun t\u00fcm g\u00fcc\u00fcnden faydalanabilirler.<\/p>\n<p>Algolia&#8217;n\u0131n sundu\u011fu ki\u015fiselle\u015ftirme, A\/B testi ve analitik gibi di\u011fer geli\u015fmi\u015f \u00f6zellikler, arama deneyiminizi daha da optimize etme potansiyeli sunar. Bu entegrasyon, kullan\u0131c\u0131lar\u0131n\u0131z\u0131n arad\u0131klar\u0131n\u0131 an\u0131nda bulmalar\u0131n\u0131 sa\u011flayarak uygulaman\u0131z\u0131n genel ba\u015far\u0131s\u0131na \u00f6nemli katk\u0131lar sa\u011flayacakt\u0131r. Unutmay\u0131n, iyi bir arama deneyimi, sadece bir \u00f6zellik de\u011fil, ayn\u0131 zamanda kullan\u0131c\u0131 memnuniyetinin ve d\u00f6n\u00fc\u015f\u00fcm oranlar\u0131n\u0131n temel bir itici g\u00fcc\u00fcd\u00fcr.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Algolia InstantSearch&#8217;\u00fc Vue.js ile Entegre Etmek: Kapsaml\u0131 Bir Rehber\nG\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, kullan\u0131c\u0131lar\u0131n arad\u0131klar\u0131 bilgilere v","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1402],"tags":[],"class_list":{"0":"post-37396","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-vue","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Algolia InstantSearch&#039;\u00fc Vue.js ile Entegre Etmek: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Algolia InstantSearch&#039;\u00fc Vue.js ile Entegre Etmek: Kapsaml\u0131 Bir Rehber\" \/>\n<meta property=\"og:description\" content=\"Algolia InstantSearch&#039;\u00fc Vue.js ile Entegre Etmek: Kapsaml\u0131 Bir Rehber G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, kullan\u0131c\u0131lar\u0131n arad\u0131klar\u0131 bilgilere v\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-02T23:40:57+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Algolia InstantSearch&#8217;\u00fc Vue.js ile Entegre Etmek: Kapsaml\u0131 Bir Rehber\",\"datePublished\":\"2026-01-02T23:40:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/\"},\"wordCount\":2578,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Vue\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/\",\"name\":\"Algolia InstantSearch'\u00fc Vue.js ile Entegre Etmek: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-02T23:40:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Algolia InstantSearch&#8217;\u00fc Vue.js ile Entegre Etmek: Kapsaml\u0131 Bir Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Algolia InstantSearch'\u00fc Vue.js ile Entegre Etmek: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"Algolia InstantSearch'\u00fc Vue.js ile Entegre Etmek: Kapsaml\u0131 Bir Rehber","og_description":"Algolia InstantSearch'\u00fc Vue.js ile Entegre Etmek: Kapsaml\u0131 Bir Rehber G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, kullan\u0131c\u0131lar\u0131n arad\u0131klar\u0131 bilgilere v","og_url":"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-02T23:40:57+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"15 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Algolia InstantSearch&#8217;\u00fc Vue.js ile Entegre Etmek: Kapsaml\u0131 Bir Rehber","datePublished":"2026-01-02T23:40:57+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/"},"wordCount":2578,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Vue"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/","name":"Algolia InstantSearch'\u00fc Vue.js ile Entegre Etmek: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-02T23:40:57+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/algolia-instantsearchu-vue-js-ile-entegre-etmek-kapsamli-bir-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Algolia InstantSearch&#8217;\u00fc Vue.js ile Entegre Etmek: Kapsaml\u0131 Bir Rehber"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37396","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=37396"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37396\/revisions"}],"predecessor-version":[{"id":37397,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37396\/revisions\/37397"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37396"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37396"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}