패싯에 추가하려는 속성이 있습니다 : ApprovalFL
. Algolia 대시 보드에 패싯을 추가하면 다시 색인해야만 어떤 이유로 대시 보드에서 패싯을 삭제해야합니다. 내 코드에서 속성을 추가하면 문제가 해결 될지도 모른다고 생각했습니다.Algolia C#으로 패싯에 대한 속성 추가하기
index.SetSettings(
JObject.Parse(@"{""attributesForFaceting"":[""author"",""filterOnly(category)"",""searchable(publisher)""]}")
);
(내 AdminController.cs
에 있음) : 여기
https://www.algolia.com/doc/api-reference/api-parameters/attributesForFaceting/는 그들이 제공하는 C# 예제입니다 : 여기이 단계에 대한 문서를 발견 :
public async Task<ActionResult> ReIndexData()
{
var algoliaArtistModels = Tools.BuildAlgoliaArtistModels(EntityDataAccess.GetAllAccountInfoes());
var algoliaUnaffiliatedArtistModels = Tools.BuildAlgoliaArtistModels(EntityDataAccess.GetAllUnaffiliatedAccountInfo());
var algoliaSongModels = Tools.BuildAlgoliaSongModels(EntityDataAccess.GetAllAcceptedSongs());
var artistIndexHelper = HttpContext.Application.Get("ArtistIndexHelper") as IndexHelper<ArtistAlgoliaModel>;
var unaffiliatedArtistIndexHelper = HttpContext.Application.Get("UnaffiliatedArtist") as IndexHelper<ArtistAlgoliaModel>;
var songIndexHelper = HttpContext.Application.Get("SongIndexHelper") as IndexHelper<SongAlgoliaModel>;
await artistIndexHelper.OverwriteIndexAsync(algoliaArtistModels);
await unaffiliatedArtistIndexHelper.OverwriteIndexAsync(algoliaUnaffiliatedArtistModels);
await songIndexHelper.OverwriteIndexAsync(algoliaSongModels);
return View("AlgoliaReIndexData");
}
그러나, 나는이 코드 블록에 index.setSettings
을 넣어 생각하지 않는다, 내 백엔드 코드에서 패 시팅 (faceting)에 대해이 속성을 설정하는 가장 좋은 방법은 무엇입니까? ApprovalFL
속성은 내 노래 색인에 저장됩니다.
내 Tools.cs
에 여기 어딘가에 있어야할까요?
public static SongAlgoliaModel BuildAlgoliaSongModel(Song song)
{
var model = new SongAlgoliaModel();
var album = EntityDataAccess.GetAlbumByID(song.AlbumID);
model.AccountImageURL = album.AccountInfo.ImageURL;
model.AccountInfoID = album.AccountInfoID;
model.AccountType = album.AccountInfo.CreatorFL == true ? "Creator" : "Artist";
model.AlbumID = song.AlbumID;
model.AlbumName = album.AlbumName;
model.ApprovalFL = song.ApprovalFL;
model.Artist = album.AccountInfo.DisplayName;
model.BPM = song.BPM;
model.Duration = song.Duration;
model.FeaturedArtist = song.Artist;
model.FreeFL = album.FreeFL;
model.ImageURL = album.ImageURL;
model.iTunesURL = album.iTunesURL;
model.LabelName = album.LabelName;
model.LicenseFL = album.LicenseFL;
model.SongID = song.SongID;
model.Title = song.Title;
model.UploadDate = song.UploadDate;
model.URL = song.URL;
model.UserID = album.AccountInfo.UserID;
return model;
}
public static List<SongAlgoliaModel> BuildAlgoliaSongModels(AccountInfo accountInfo)
{
var list = new List<SongAlgoliaModel>();
var songs = EntityDataAccess.GetSongsByUserID(accountInfo.UserID).Where(x => x.ApprovalFL == true).ToList();
foreach(var item in songs)
{
var model = new SongAlgoliaModel();
model.AccountImageURL = item.Album.AccountInfo.ImageURL;
model.AccountInfoID = item.Album.AccountInfoID;
model.AccountType = item.Album.AccountInfo.CreatorFL == true ? "Creator" : "Artist";
model.AlbumID = item.AlbumID;
model.AlbumName = item.Album.AlbumName;
model.ApprovalFL = item.ApprovalFL;
model.Artist = item.Album.AccountInfo.DisplayName;
model.BPM = item.BPM;
model.Duration = item.Duration;
model.FeaturedArtist = item.Artist;
model.FreeFL = item.Album.FreeFL;
model.ImageURL = item.Album.ImageURL;
model.iTunesURL = item.Album.iTunesURL;
model.LabelName = item.Album.LabelName;
model.LicenseFL = item.Album.LicenseFL;
model.SongID = item.SongID;
model.Title = item.Title;
model.UploadDate = item.UploadDate;
model.URL = item.URL;
model.UserID = item.Album.AccountInfo.UserID;
list.Add(model);
}
return list;
}
이봐 다니엘이이 새로운 노래는 사용자가 추가되고 있기 때문에 모든 시간과 나는 것 그들이 살기 시작할 때 검색 가능한 것처럼. 말이 돼? 검색 결과를 업데이트하는 더 좋은 방법이 있습니까? –
예, 정확하게 노래 추가 모듈에 Algolia를 통합하거나 정기적으로 새 노래를 확인하고 색인 처리하도록하는 배경 작업을 할 수 있습니다. 이제 인덱스 처리를 통해 API로 데이터를 푸시 할 수 있습니다. https://www.algolia.com/doc/tutorials/getting-started/quick-start-with-the-api-client/csharp/를 참조하십시오. # push-data. 새로운 노래가 추가 될 때마다 색인을 다시 만들 필요가 없습니다. 이는 비효율적입니다. –