{"id":271,"date":"2021-04-23T15:56:27","date_gmt":"2021-04-23T15:56:27","guid":{"rendered":"https:\/\/okankaradag.com\/?p=271"},"modified":"2021-04-23T15:57:43","modified_gmt":"2021-04-23T15:57:43","slug":"dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak","status":"publish","type":"post","link":"https:\/\/okankaradag.com\/en\/asp-net-5\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak","title":{"rendered":"How to Make Search Engine with Postgresql Full Text Search In Asp.Net Core (5.0)"},"content":{"rendered":"<p>In this post, We will test postgresql full text search with api in Asp.net core (5.0)<\/p>\n\n\n\n<h4>Development Environment<\/h4>\n\n\n\n<ul><li>Windows 10<\/li><li>Postgresql 12<\/li><li>Dotnet 5.0<\/li><li>EntityFramework Core 5<\/li><\/ul>\n\n\n\n<p>For detail info about Postgresql Full Text Search, <a rel=\"noreferrer noopener\" href=\"https:\/\/okankaradag.com\/en\/postgresql\/postgresql-full-text-search-nasil-kullanilir\/\" data-type=\"URL\" data-id=\"https:\/\/okankaradag.com\/postgresql\/postgresql-full-text-search-nasil-kullanilir\/\" target=\"_blank\">this <\/a>article you can examine<\/p>\n\n\n\n<p class=\" translation-block\">We will make an api project, this api will be the bridge between with <strong>postgresql <\/strong>fts<\/p>\n\n\n\n<p><strong>We open as Asp.Net Core (5.0) web api<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-1 is-cropped\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" width=\"1024\" height=\"709\" src=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_69-1024x709.png\" alt=\"\" data-id=\"273\" data-full-url=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_69.png\" data-link=\"https:\/\/okankaradag.com\/?attachment_id=273\" class=\"wp-image-273\" srcset=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_69-1024x709.png 1024w, https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_69-300x208.png 300w, https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_69-768x532.png 768w, https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_69.png 1027w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p class=\" translation-block\">We create api controller named <strong>MovieController <\/strong><\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-1 is-cropped\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" width=\"948\" height=\"663\" src=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_71.png\" alt=\"\" data-id=\"274\" data-full-url=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_71.png\" data-link=\"https:\/\/okankaradag.com\/?attachment_id=274\" class=\"wp-image-274\" srcset=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_71.png 948w, https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_71-300x210.png 300w, https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_71-768x537.png 768w\" sizes=\"(max-width: 948px) 100vw, 948px\" \/><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p class=\" translation-block\">We make connection settings in <strong>appsetting.json <\/strong> and <strong>startup.cs<\/strong><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:dark-terminal lang:js decode:true\">{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft\": \"Warning\",\n      \"Microsoft.Hosting.Lifetime\": \"Information\"\n    }\n  },\n  \"AllowedHosts\": \"*\",\n  \"ConnectionStrings\": {\n    \"PostgresqlConnection\": \"User ID=postgres;Password=123;Server=localhost;Port=5432;Database=FirstMyDb;Integrated Security=true;Pooling=true;\"\n  }\n}<\/pre><\/div>\n\n\n\n<h3><strong>Startup.cs:<\/strong><\/h3>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github toolbar:2 lang:c# decode:true\"> public void ConfigureServices(IServiceCollection services)\n        {\n\n            services.AddControllers();\n            services.AddDbContext&lt;ApplicationDbContext&gt;(\n                options =&gt; options.UseNpgsql(Configuration.GetConnectionString(\"PostgresqlConnection\")));\n            services.AddSwaggerGen(c =&gt;\n            {\n                c.SwaggerDoc(\"v1\", new OpenApiInfo { Title = \"MovieSearchApp\", Version = \"v1\" });\n            });\n        }<\/pre><\/div>\n\n\n\n<p>We do single layer architecture as it is a simple api<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-1 is-cropped\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" width=\"464\" height=\"432\" src=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_72.png\" alt=\"\" data-id=\"275\" data-full-url=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_72.png\" data-link=\"https:\/\/okankaradag.com\/?attachment_id=275\" class=\"wp-image-275\" srcset=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_72.png 464w, https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_72-300x279.png 300w\" sizes=\"(max-width: 464px) 100vw, 464px\" \/><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p class=\" translation-block\">We will act according to the table we created in the <a rel=\"noreferrer noopener\" href=\"https:\/\/okankaradag.com\/postgresql\/postgresql-full-text-search-nasil-kullanilir\/\" data-type=\"URL\" data-id=\"https:\/\/okankaradag.com\/postgresql\/postgresql-full-text-search-nasil-kullanilir\/\" target=\"_self\">link<\/a>. There is a SearchKeywords column where we will search in the Movie entity, and there are two options here.<\/p>\n\n\n\n<ol><li class=\" translation-block\">We can create <strong>tsvector <\/strong>column<strong> in NpgsqlTsVector <\/strong> type, So we can use extensions which special prepare for fts<\/li><li class=\" translation-block\">if the other option, <strong>tsvector <\/strong> column create in string type, in this case we can just write pure sql<\/li><\/ol>\n\n\n\n<p> Let's start with the first method, where I will talk about how to write both methods and their pros and cons.<\/p>\n\n\n\n<h3>Movie.cs<\/h3>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github toolbar:2 lang:c# decode:true\">    [Keyless]\n    public class Movie\n    {\n        public int Rank { get; set; }\n        public string Title { get; set; }\n        public string Genre { get; set; }\n        public string Description { get; set; }\n        public string Director { get; set; }\n        public string Actors { get; set; }\n        public int? Year { get; set; }\n        public decimal? Rating  { get; set; }\n        public string Votes { get; set; }\n        public NpgsqlTsVector SearchKeywords { get; set; }\n    }<\/pre><\/div>\n\n\n\n<h3>MovieController<\/h3>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github toolbar:2 lang:c# decode:true\">    [Route(\"api\/[controller]\/[action]\")]\n    [ApiController]\n    public class MovieController : ControllerBase\n    {\n        private ApplicationDbContext _db;\n        public MovieController(ApplicationDbContext Db)\n        {\n            _db = Db;\n        }\n        [HttpGet]\n        public IActionResult Find(string q)\n        {\n            var model = _db.Movies.Where(p =&gt; p.SearchKeywords.Matches(q)).ToList();\n            return Ok(model);\n        }\n    }<\/pre><\/div>\n\n\n\n<p><strong>We test api on swagger<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-1 is-cropped\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" width=\"1024\" height=\"602\" src=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_73-1024x602.png\" alt=\"\" data-id=\"283\" data-full-url=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_73.png\" data-link=\"https:\/\/okankaradag.com\/?attachment_id=283\" class=\"wp-image-283\" srcset=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_73-1024x602.png 1024w, https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_73-300x176.png 300w, https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_73-768x452.png 768w, https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_73.png 1428w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>\u015eimdi 2.y\u00f6ntemimizi test edelim. \u00d6nce <strong>SearchKeywords <\/strong>propertyimizi string olarak de\u011fi\u015ftirelim. De\u011fi\u015ftirdikten sonra Find actionuna ham sql sorgumuzu yazal\u0131m<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github toolbar:2 lang:c# decode:true\">        [HttpGet]\n        public IActionResult Find(string q)\n        {\n            if (!String.IsNullOrEmpty(q))\n            {\n                var model = _db.Movies\n                    .FromSqlRaw(@\"Select * from public.\"\"Movies\"\" where \"\"SearchKeywords\"\" @@ to_tsquery('english',{0})\", q)\n                    .Select(m =&gt;\n                    new\n                    {\n                        Title = m.Title,\n                        Description = m.Description,\n                        Rank = m.Rank\n                    }).ToList();\n                return Ok(model);\n            }\n            return Ok(\"\");\n        }<\/pre><\/div>\n\n\n\n<p>Test etti\u011fimizde a\u015fa\u011f\u0131daki sonu\u00e7lar gelecek<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-1 is-cropped\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" width=\"1024\" height=\"586\" src=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_74-1024x586.png\" alt=\"\" data-id=\"284\" data-full-url=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_74.png\" data-link=\"https:\/\/okankaradag.com\/?attachment_id=284\" class=\"wp-image-284\" srcset=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_74-1024x586.png 1024w, https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_74-300x172.png 300w, https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_74-768x440.png 768w, https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/04\/Screenshot_74.png 1418w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/li><\/ul><\/figure>\n\n\n\n<h3>Sonu\u00e7<\/h3>\n\n\n\n<p>Her iki y\u00f6ntemde de sonu\u00e7lar\u0131 elde ettik ama Ham sql zorunlu olmad\u0131k\u00e7a yaz\u0131lmamal\u0131 e\u011fer ki orm framework&#8217;\u00fc baz\u0131 sql desteklerini vermiyorsa mecbur kullan\u0131labilir \u00f6rnek olarak npsql <strong>entity framework<\/strong> k\u00fct\u00fcphanesinde <strong>tsvector <\/strong>deste\u011fi yok mecburen ham sql yaz\u0131lmak zorunda. Di\u011fer t\u00fcrl\u00fc <strong>sql <\/strong>sorgular\u0131yla yap\u0131lacak i\u015flemler ile h\u0131zl\u0131 sonu\u00e7 alabilirsiniz ama <strong>temiz kod<\/strong> yaz\u0131lamaz ileride problemlere sebep olur. <\/p>\n\n\n\n<p>Elasticsearch&#8217;e ihtiya\u00e7 olmayan durumlarda yani az datam\u0131z\u0131n olmas\u0131 bunun yan\u0131nda, syntax&#8217;\u0131n\u0131n \u00e7abuk \u00f6\u011frenilmemesi gibi nedenlerle postgresql bu konuda gayet g\u00fczel bir alternatif olmakta.<\/p>","protected":false},"excerpt":{"rendered":"<p>In this post, We will test postgresql full text search with api in Asp.net core (5.0). We will make an api project, this api will be the bridge between with postgresql fts...<\/p>","protected":false},"author":1,"featured_media":203,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[40,65,17,42,41],"tags":[66,45,64,62,44],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Dotnet 5.0&#039;de Postgresql Full Text Search ile Arama Motoru yapmak. - Okan Karada\u011f<\/title>\n<meta name=\"description\" content=\"H\u0131zl\u0131 arama yapabilmek asp.net 5.0&#039;a postgresql full text search kullan\u0131p bir api yazarak bunu test edece\u011fiz ve sonu\u00e7lar\u0131na hep beraber bakaca\u011f\u0131z.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/okankaradag.com\/en\/asp-net-5\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dotnet 5.0&#039;de Postgresql Full Text Search ile Arama Motoru yapmak. - Okan Karada\u011f\" \/>\n<meta property=\"og:description\" content=\"H\u0131zl\u0131 arama yapabilmek asp.net 5.0&#039;a postgresql full text search kullan\u0131p bir api yazarak bunu test edece\u011fiz ve sonu\u00e7lar\u0131na hep beraber bakaca\u011f\u0131z.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/okankaradag.com\/en\/asp-net-5\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak\/\" \/>\n<meta property=\"og:site_name\" content=\"Okan Karada\u011f\" \/>\n<meta property=\"article:published_time\" content=\"2021-04-23T15:56:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-04-23T15:57:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/02\/asp.net-core-logo-e1623756006486.png\" \/>\n\t<meta property=\"og:image:width\" content=\"300\" \/>\n\t<meta property=\"og:image:height\" content=\"167\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Okan Karada\u011f\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Okan Karada\u011f\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak#article\",\"isPartOf\":{\"@id\":\"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak\"},\"author\":{\"name\":\"Okan Karada\u011f\",\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\"},\"headline\":\"Dotnet 5.0&#8217;de Postgresql Full Text Search ile Arama Motoru yapmak.\",\"datePublished\":\"2021-04-23T15:56:27+00:00\",\"dateModified\":\"2021-04-23T15:57:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak\"},\"wordCount\":393,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\"},\"keywords\":[\"asp.net 5\",\"dotnet core\",\"full text search\",\"h\u0131zl\u0131 arama\",\"postgresql\"],\"articleSection\":[\"Asp.Net Core\",\"Asp.Net Core 5.0\",\"C#\",\"EntityFramework Core\",\"PostgreSql\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak\",\"url\":\"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak\",\"name\":\"Dotnet 5.0'de Postgresql Full Text Search ile Arama Motoru yapmak. - Okan Karada\u011f\",\"isPartOf\":{\"@id\":\"https:\/\/okankaradag.com\/#website\"},\"datePublished\":\"2021-04-23T15:56:27+00:00\",\"dateModified\":\"2021-04-23T15:57:43+00:00\",\"description\":\"H\u0131zl\u0131 arama yapabilmek asp.net 5.0'a postgresql full text search kullan\u0131p bir api yazarak bunu test edece\u011fiz ve sonu\u00e7lar\u0131na hep beraber bakaca\u011f\u0131z.\",\"breadcrumb\":{\"@id\":\"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/okankaradag.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dotnet 5.0&#8217;de Postgresql Full Text Search ile Arama Motoru yapmak.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/okankaradag.com\/#website\",\"url\":\"https:\/\/okankaradag.com\/\",\"name\":\"Okan Karada\u011f\",\"description\":\"Programlama \u00dczerine\",\"publisher\":{\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/okankaradag.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\",\"name\":\"Okan Karada\u011f\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g\",\"caption\":\"Okan Karada\u011f\"},\"logo\":{\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/okankaradag.com\"],\"url\":\"https:\/\/okankaradag.com\/en\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dotnet 5.0'de Postgresql Full Text Search ile Arama Motoru yapmak. - Okan Karada\u011f","description":"H\u0131zl\u0131 arama yapabilmek asp.net 5.0'a postgresql full text search kullan\u0131p bir api yazarak bunu test edece\u011fiz ve sonu\u00e7lar\u0131na hep beraber bakaca\u011f\u0131z.","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:\/\/okankaradag.com\/en\/asp-net-5\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak\/","og_locale":"en_US","og_type":"article","og_title":"Dotnet 5.0'de Postgresql Full Text Search ile Arama Motoru yapmak. - Okan Karada\u011f","og_description":"H\u0131zl\u0131 arama yapabilmek asp.net 5.0'a postgresql full text search kullan\u0131p bir api yazarak bunu test edece\u011fiz ve sonu\u00e7lar\u0131na hep beraber bakaca\u011f\u0131z.","og_url":"https:\/\/okankaradag.com\/en\/asp-net-5\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak\/","og_site_name":"Okan Karada\u011f","article_published_time":"2021-04-23T15:56:27+00:00","article_modified_time":"2021-04-23T15:57:43+00:00","og_image":[{"width":300,"height":167,"url":"https:\/\/okankaradag.com\/wp-content\/uploads\/2021\/02\/asp.net-core-logo-e1623756006486.png","type":"image\/png"}],"author":"Okan Karada\u011f","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Okan Karada\u011f","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak#article","isPartOf":{"@id":"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak"},"author":{"name":"Okan Karada\u011f","@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52"},"headline":"Dotnet 5.0&#8217;de Postgresql Full Text Search ile Arama Motoru yapmak.","datePublished":"2021-04-23T15:56:27+00:00","dateModified":"2021-04-23T15:57:43+00:00","mainEntityOfPage":{"@id":"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak"},"wordCount":393,"commentCount":0,"publisher":{"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52"},"keywords":["asp.net 5","dotnet core","full text search","h\u0131zl\u0131 arama","postgresql"],"articleSection":["Asp.Net Core","Asp.Net Core 5.0","C#","EntityFramework Core","PostgreSql"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak#respond"]}]},{"@type":"WebPage","@id":"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak","url":"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak","name":"Dotnet 5.0'de Postgresql Full Text Search ile Arama Motoru yapmak. - Okan Karada\u011f","isPartOf":{"@id":"https:\/\/okankaradag.com\/#website"},"datePublished":"2021-04-23T15:56:27+00:00","dateModified":"2021-04-23T15:57:43+00:00","description":"H\u0131zl\u0131 arama yapabilmek asp.net 5.0'a postgresql full text search kullan\u0131p bir api yazarak bunu test edece\u011fiz ve sonu\u00e7lar\u0131na hep beraber bakaca\u011f\u0131z.","breadcrumb":{"@id":"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/okankaradag.com\/csharp\/dotnet-5-0de-postgresql-full-text-search-ile-arama-motoru-yapmak#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/okankaradag.com\/"},{"@type":"ListItem","position":2,"name":"Dotnet 5.0&#8217;de Postgresql Full Text Search ile Arama Motoru yapmak."}]},{"@type":"WebSite","@id":"https:\/\/okankaradag.com\/#website","url":"https:\/\/okankaradag.com\/","name":"Okan Karada\u011f","description":"Programlama \u00dczerine","publisher":{"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/okankaradag.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52","name":"Okan Karada\u011f","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/okankaradag.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g","caption":"Okan Karada\u011f"},"logo":{"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/okankaradag.com"],"url":"https:\/\/okankaradag.com\/en\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts\/271"}],"collection":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/comments?post=271"}],"version-history":[{"count":16,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts\/271\/revisions"}],"predecessor-version":[{"id":410,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts\/271\/revisions\/410"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/media\/203"}],"wp:attachment":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/media?parent=271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/categories?post=271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/tags?post=271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}