add version 0.27.38.60 , fix search service

release
Amir Hossein Khademi 2024-05-24 16:18:56 +03:30
parent b45b0450a7
commit b7dbe67e7f
9 changed files with 26 additions and 20 deletions

View File

@ -1 +1 @@
0.27.37.59 0.27.38.60

View File

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

View File

@ -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");
} }

View File

@ -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
{ {

View File

@ -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,18 +38,19 @@ 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);

View File

@ -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;

View File

@ -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)
{ {

View File

@ -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)