Skip to content

tedvanderveen/RedDog.Search

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RedDog.Search

This library interacts with the Microsoft Azure Search REST API. You can use the library to manage indexes, populate indexes and execute queries.

Getting Started

Initialize the ApiConnection with your credentials:

ApiConnection connection = ApiConnection.Create("myservice","mykey");

Creating an index:

var client = new IndexManagementClient(connection);
await client.CreateIndexAsync(new Index("records")
    .WithStringField("id", f => f
        .IsKey()
        .IsRetrievable())
    .WithStringField("title", f => f
        .IsSearchable()
        .IsRetrievable())
    .WithDateTimeField("createdOn", f => f
        .IsRetrievable()));

Updating an index:

var client = new IndexManagementClient(connection);
await client.UpdateIndexAsync(new Index("records")
    .WithStringField("id", f => f
        .IsKey()
        .IsRetrievable())
    .WithStringField("author", f => f
        .IsSearchable()
        .IsSortable()
        .IsRetrievable())
    .WithStringField("title", f => f
        .IsSearchable()
        .IsRetrievable())
    .WithDateTimeField("createdOn", f => f
        .IsRetrievable()));

List all indexes:

var client = new IndexManagementClient(connection);
var indexes = await client.GetIndexesAsync();

Delete an index:

var client = new IndexManagementClient(connection);
var records = await client.DeleteIndexAsync("records");

Get the statistics for an index:

var client = new IndexManagementClient(connection);
var records = await client.GetIndexStatisticsAsync("records");
Console.WriteLine("Total documents: {0}", records.Body.DocumentCount);
Console.WriteLine("Total size: {0} bytes", records.Body.StorageSize);

Upload data to your index:

var client = new IndexManagementClient(connection);
var result = await client.PopulateAsync("records",
    new IndexOperation(IndexOperationType.Upload, "id", "1")
        .WithProperty("title", "My first movie")
        .WithProperty("author", "Sandrino")
        .WithProperty("createdOn", new DateTimeOffset(2014, 8, 1, 0, 0, 0, TimeSpan.Zero)),
    new IndexOperation(IndexOperationType.Upload, "id", "2")
        .WithProperty("title", "My second movie")
        .WithProperty("author", "Sandrino")
        .WithProperty("createdOn", new DateTimeOffset(2014, 8, 2, 0, 0, 0, TimeSpan.Zero)));

Execute a query:

var client = new IndexQueryClient(connection);
var results = await client.SearchAsync("records", new SearchQuery("movie")
    .OrderBy("author")
    .SearchField("title")
    .Count(true));

Execute a suggestion:

var client = new IndexQueryClient(connection);
var results = await client.SuggestAsync("records", new SuggestionQuery("mov")
	.Fuzzy(true)
	.Select("author")
	.Select("title")                    
	.SearchField("title")
	.OrderBy("title")
	.Top(10));

Execute a lookup:

var client = new IndexQueryClient(connection);
var results = await client.SuggestAsync("records", new LookupQuery("11ad89b6-9f1b-4380-aa06-8da39df61210")
	.Select("author,title"));

Handling exceptions:

var response = await client.DoSomething();
if (!response.IsSuccess)
{
    Console.WriteLine("{0}: {1}", response.Error.Code, response.Error.Message);
}

About

Management library for Microsoft Azure Search

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 96.7%
  • F# 3.2%
  • Shell 0.1%