add version 0.27.38.60 , fix search service
parent
b45b0450a7
commit
b7dbe67e7f
|
@ -6,8 +6,8 @@
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<InvariantGlobalization>true</InvariantGlobalization>
|
<InvariantGlobalization>true</InvariantGlobalization>
|
||||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||||
<AssemblyVersion>0.27.37.59</AssemblyVersion>
|
<AssemblyVersion>0.27.38.60</AssemblyVersion>
|
||||||
<FileVersion>0.27.37.59</FileVersion>
|
<FileVersion>0.27.38.60</FileVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -8,7 +8,7 @@ string env = builder.Environment.IsDevelopment() == true ? "Development" : "Prod
|
||||||
builder.Host.UseContentRoot(Directory.GetCurrentDirectory());
|
builder.Host.UseContentRoot(Directory.GetCurrentDirectory());
|
||||||
if (builder.Environment.IsDevelopment())
|
if (builder.Environment.IsDevelopment())
|
||||||
{
|
{
|
||||||
string projectName = "Hamyan";
|
string projectName = "Vesmeh";
|
||||||
builder.Configuration.AddJsonFile($"AppSettings/appsettings.json").AddJsonFile($"AppSettings/appsettings.{env}{projectName}.json");
|
builder.Configuration.AddJsonFile($"AppSettings/appsettings.json").AddJsonFile($"AppSettings/appsettings.{env}{projectName}.json");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@ public static class ServiceExtensions
|
||||||
options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
|
options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
|
||||||
options.UseNpgsql(Configuration.GetConnectionString("Postgres"), b => b.MigrationsAssembly("Netina.Repository"))
|
options.UseNpgsql(Configuration.GetConnectionString("Postgres"), b => b.MigrationsAssembly("Netina.Repository"))
|
||||||
.UseProjectAssembly(typeof(ApplicationUser).Assembly);
|
.UseProjectAssembly(typeof(ApplicationUser).Assembly);
|
||||||
|
|
||||||
//options.EnableServiceProviderCaching(true);
|
//options.EnableServiceProviderCaching(true);
|
||||||
}).BuildServiceProvider();
|
}).BuildServiceProvider();
|
||||||
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
|
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
|
||||||
|
|
|
@ -1,8 +1,4 @@
|
||||||
using Netina.Common.Models;
|
namespace Netina.Core.Abstracts;
|
||||||
using Netina.Domain.Dtos.SmallDtos;
|
|
||||||
using Netina.Domain.Enums;
|
|
||||||
|
|
||||||
namespace Netina.Core.Abstracts;
|
|
||||||
|
|
||||||
public interface IStorageService : IScopedDependency
|
public interface IStorageService : IScopedDependency
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,17 +15,17 @@ public class SearchService : ISearchService
|
||||||
}
|
}
|
||||||
public async Task<SearchResponseDto> SearchAsync(string name, CancellationToken cancellationToken = default)
|
public async Task<SearchResponseDto> SearchAsync(string name, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
var searchQuery = name.ToLowerInvariant().Trim();
|
var searchQuery = name.ToLower().Trim();
|
||||||
int minSimilarityThreshold = 20;
|
int minSimilarityThreshold = 20;
|
||||||
var products = await _repositoryWrapper.SetRepository<Product>()
|
var products = await _repositoryWrapper.SetRepository<Product>()
|
||||||
.TableNoTracking
|
.TableNoTracking
|
||||||
.Where(p => FuzzySharp.Fuzz.PartialRatio(p.PersianName.ToLowerInvariant().Trim(), searchQuery) >= minSimilarityThreshold)
|
.Where(p => FuzzySharp.Fuzz.PartialRatio(p.PersianName.ToLower().Trim(), searchQuery) >= minSimilarityThreshold)
|
||||||
.Select(ProductMapper.ProjectToSDto)
|
.Select(ProductMapper.ProjectToSDto)
|
||||||
.ToListAsync(cancellationToken);
|
.ToListAsync(cancellationToken);
|
||||||
|
|
||||||
var categories = await _repositoryWrapper.SetRepository<ProductCategory>()
|
var categories = await _repositoryWrapper.SetRepository<ProductCategory>()
|
||||||
.TableNoTracking
|
.TableNoTracking
|
||||||
.Where(p => FuzzySharp.Fuzz.PartialRatio(p.Name.ToLowerInvariant().Trim(), searchQuery) >= minSimilarityThreshold)
|
.Where(p => FuzzySharp.Fuzz.PartialRatio(p.Name.ToLower().Trim(), searchQuery) >= minSimilarityThreshold)
|
||||||
.Select(ProductCategoryMapper.ProjectToSDto)
|
.Select(ProductCategoryMapper.ProjectToSDto)
|
||||||
.ToListAsync(cancellationToken);
|
.ToListAsync(cancellationToken);
|
||||||
|
|
||||||
|
@ -38,21 +38,22 @@ public class SearchService : ISearchService
|
||||||
|
|
||||||
public async Task<SearchResponseDto> ThumbSearchAsync(string name, CancellationToken cancellationToken = default)
|
public async Task<SearchResponseDto> ThumbSearchAsync(string name, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
var searchQuery = name.ToLowerInvariant().Trim();
|
var searchQuery = name;
|
||||||
int minSimilarityThreshold = 20;
|
|
||||||
var products = await _repositoryWrapper.SetRepository<Product>()
|
var products = await _repositoryWrapper.SetRepository<Product>()
|
||||||
.TableNoTracking
|
.TableNoTracking
|
||||||
.Where(p => FuzzySharp.Fuzz.PartialRatio(p.PersianName.ToLowerInvariant().Trim(), searchQuery) >= minSimilarityThreshold)
|
.OrderByDescending(p => EF.Functions.TrigramsSimilarity(p.PersianName, searchQuery))
|
||||||
.Take(8)
|
.Take(8)
|
||||||
.Select(ProductMapper.ProjectToSDto)
|
.Select(ProductMapper.ProjectToSDto)
|
||||||
.ToListAsync(cancellationToken);
|
.ToListAsync(cancellationToken);
|
||||||
|
|
||||||
var categories = await _repositoryWrapper.SetRepository<ProductCategory>()
|
var categories = await _repositoryWrapper.SetRepository<ProductCategory>()
|
||||||
.TableNoTracking
|
.TableNoTracking
|
||||||
.Where(p => FuzzySharp.Fuzz.PartialRatio(p.Name.ToLowerInvariant().Trim(), searchQuery) >= minSimilarityThreshold)
|
.OrderByDescending(p => EF.Functions.TrigramsSimilarity(p.Name.ToLower().Trim(), searchQuery))
|
||||||
|
.Take(8)
|
||||||
.Select(ProductCategoryMapper.ProjectToSDto)
|
.Select(ProductCategoryMapper.ProjectToSDto)
|
||||||
.ToListAsync(cancellationToken);
|
.ToListAsync(cancellationToken);
|
||||||
|
|
||||||
return new SearchResponseDto
|
return new SearchResponseDto
|
||||||
{
|
{
|
||||||
Products = products.Select(p => p.Adapt<SearchedProductResponseDto>()).ToList(),
|
Products = products.Select(p => p.Adapt<SearchedProductResponseDto>()).ToList(),
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
using Marten;
|
using Marten;
|
||||||
using Netina.Common.Models.Entity;
|
|
||||||
using Netina.Repository.Repositories.Marten;
|
|
||||||
|
|
||||||
namespace Netina.Infrastructure.Marten;
|
namespace Netina.Infrastructure.Marten;
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
|
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System.Reflection.Emit;
|
||||||
|
|
||||||
namespace Netina.Repository.Models;
|
namespace Netina.Repository.Models;
|
||||||
|
|
||||||
|
@ -26,6 +27,10 @@ public class ApplicationContext : IdentityDbContext<ApplicationUser, Application
|
||||||
_logger.LogInformation($"!!!!!!! RegisterAllEntities : {stopwatch.ElapsedMilliseconds}ms !!!!!!!");
|
_logger.LogInformation($"!!!!!!! RegisterAllEntities : {stopwatch.ElapsedMilliseconds}ms !!!!!!!");
|
||||||
|
|
||||||
|
|
||||||
|
builder.HasPostgresExtension("pg_trgm");
|
||||||
|
builder.HasPostgresExtension("fuzzystrmatch");
|
||||||
|
builder.HasDbFunction(() => FuzzyStringMatchDifference(default, default));
|
||||||
|
|
||||||
RenameIdentityTables(builder);
|
RenameIdentityTables(builder);
|
||||||
builder.RegisterEntityTypeConfiguration(entitiesAssembly);
|
builder.RegisterEntityTypeConfiguration(entitiesAssembly);
|
||||||
builder.AddPluralizingTableNameConvention();
|
builder.AddPluralizingTableNameConvention();
|
||||||
|
@ -33,6 +38,11 @@ public class ApplicationContext : IdentityDbContext<ApplicationUser, Application
|
||||||
|
|
||||||
//builder.AddSequentialGuidForIdConvention();
|
//builder.AddSequentialGuidForIdConvention();
|
||||||
}
|
}
|
||||||
|
[DbFunction("difference", Schema = "public")]
|
||||||
|
public static int FuzzyStringMatchDifference(string source, string target)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
protected void RenameIdentityTables(ModelBuilder builder)
|
protected void RenameIdentityTables(ModelBuilder builder)
|
||||||
{
|
{
|
||||||
|
|
|
@ -33,6 +33,7 @@ public class DbInitializerService : IDbInitializerService
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_context.Database.Migrate();
|
_context.Database.Migrate();
|
||||||
|
_context.Database.ExecuteSqlRaw("CREATE EXTENSION IF NOT EXISTS pg_trgm");
|
||||||
_logger.LogInformation("Migration SUCCESS !!!!");
|
_logger.LogInformation("Migration SUCCESS !!!!");
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|
Loading…
Reference in New Issue