Browse Source

index added date (#601)

pull/603/head
Jason Dove 4 years ago committed by GitHub
parent
commit
5f6043e593
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      CHANGELOG.md
  2. 15
      ErsatzTV.Infrastructure/Search/CustomMultiFieldQueryParser.cs
  3. 15
      ErsatzTV.Infrastructure/Search/CustomQueryParser.cs
  4. 19
      ErsatzTV.Infrastructure/Search/SearchIndex.cs

4
CHANGELOG.md

@ -18,6 +18,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). @@ -18,6 +18,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Added
- Hide console window on macOS; tray menu can be used to access UI, logs and to stop the app
- Also write logs to text files in the `logs` config subfolder
- Add `added_date` to search index
- This requires rebuilding the search index and search results may be empty or incomplete until the rebuild is complete
- Add `added_inthelast`, `added_notinthelast` search field for relative added date queries
- Syntax is a number and a unit (days, weeks, months, years) like `1 week` or `2 years`
## [0.3.8-alpha] - 2022-01-23
### Fixed

15
ErsatzTV.Infrastructure/Search/CustomMultiFieldQueryParser.cs

@ -60,6 +60,21 @@ namespace ErsatzTV.Infrastructure.Search @@ -60,6 +60,21 @@ namespace ErsatzTV.Infrastructure.Search
return base.GetRangeQuery("release_date", "00000000", dateString, false, false);
}
if (field == "added_inthelast" && CustomQueryParser.ParseStart(queryText, out DateTime addedStart))
{
var todayString = DateTime.Today.ToString("yyyyMMdd");
var dateString = addedStart.ToString("yyyyMMdd");
return base.GetRangeQuery("added_date", dateString, todayString, true, true);
}
if (field == "added_notinthelast" && CustomQueryParser.ParseStart(queryText, out DateTime addedFinish))
{
var dateString = addedFinish.ToString("yyyyMMdd");
return base.GetRangeQuery("added_date", "00000000", dateString, false, false);
}
return base.GetFieldQuery(field, queryText, slop);
}

15
ErsatzTV.Infrastructure/Search/CustomQueryParser.cs

@ -57,6 +57,21 @@ namespace ErsatzTV.Infrastructure.Search @@ -57,6 +57,21 @@ namespace ErsatzTV.Infrastructure.Search
return base.GetRangeQuery("release_date", "00000000", dateString, false, false);
}
if (field == "added_inthelast" && ParseStart(queryText, out DateTime addedStart))
{
var todayString = DateTime.Today.ToString("yyyyMMdd");
var dateString = addedStart.ToString("yyyyMMdd");
return base.GetRangeQuery("added_date", dateString, todayString, true, true);
}
if (field == "added_notinthelast" && ParseStart(queryText, out DateTime addedFinish))
{
var dateString = addedFinish.ToString("yyyyMMdd");
return base.GetRangeQuery("added_date", "00000000", dateString, false, false);
}
return base.GetFieldQuery(field, queryText, slop);
}

19
ErsatzTV.Infrastructure/Search/SearchIndex.cs

@ -43,6 +43,7 @@ namespace ErsatzTV.Infrastructure.Search @@ -43,6 +43,7 @@ namespace ErsatzTV.Infrastructure.Search
private const string TitleAndYearField = "title_and_year";
private const string JumpLetterField = "jump_letter";
private const string ReleaseDateField = "release_date";
private const string AddedDateField = "added_date";
private const string StudioField = "studio";
private const string LanguageField = "language";
private const string StyleField = "style";
@ -80,7 +81,7 @@ namespace ErsatzTV.Infrastructure.Search @@ -80,7 +81,7 @@ namespace ErsatzTV.Infrastructure.Search
_initialized = false;
}
public int Version => 19;
public int Version => 20;
public Task<bool> Initialize(ILocalFileSystem localFileSystem)
{
@ -342,6 +343,8 @@ namespace ErsatzTV.Infrastructure.Search @@ -342,6 +343,8 @@ namespace ErsatzTV.Infrastructure.Search
Field.Store.NO));
}
doc.Add(new StringField(AddedDateField, metadata.DateAdded.ToString("yyyyMMdd"), Field.Store.NO));
if (!string.IsNullOrWhiteSpace(metadata.Plot))
{
doc.Add(new TextField(PlotField, metadata.Plot ?? string.Empty, Field.Store.NO));
@ -468,6 +471,8 @@ namespace ErsatzTV.Infrastructure.Search @@ -468,6 +471,8 @@ namespace ErsatzTV.Infrastructure.Search
Field.Store.NO));
}
doc.Add(new StringField(AddedDateField, metadata.DateAdded.ToString("yyyyMMdd"), Field.Store.NO));
if (!string.IsNullOrWhiteSpace(metadata.Plot))
{
doc.Add(new TextField(PlotField, metadata.Plot ?? string.Empty, Field.Store.NO));
@ -558,6 +563,8 @@ namespace ErsatzTV.Infrastructure.Search @@ -558,6 +563,8 @@ namespace ErsatzTV.Infrastructure.Search
Field.Store.NO));
}
doc.Add(new StringField(AddedDateField, metadata.DateAdded.ToString("yyyyMMdd"), Field.Store.NO));
foreach (TraktListItem item in season.TraktListItems)
{
doc.Add(new StringField(TraktListField, item.TraktList.TraktId.ToString(), Field.Store.NO));
@ -597,6 +604,8 @@ namespace ErsatzTV.Infrastructure.Search @@ -597,6 +604,8 @@ namespace ErsatzTV.Infrastructure.Search
List<string> languages = await searchRepository.GetLanguagesForArtist(artist);
await AddLanguages(searchRepository, doc, languages);
doc.Add(new StringField(AddedDateField, metadata.DateAdded.ToString("yyyyMMdd"), Field.Store.NO));
foreach (Genre genre in metadata.Genres)
{
doc.Add(new TextField(GenreField, genre.Name, Field.Store.NO));
@ -659,6 +668,8 @@ namespace ErsatzTV.Infrastructure.Search @@ -659,6 +668,8 @@ namespace ErsatzTV.Infrastructure.Search
metadata.ReleaseDate.Value.ToString("yyyyMMdd"),
Field.Store.NO));
}
doc.Add(new StringField(AddedDateField, metadata.DateAdded.ToString("yyyyMMdd"), Field.Store.NO));
if (!string.IsNullOrWhiteSpace(metadata.Album))
{
@ -748,6 +759,8 @@ namespace ErsatzTV.Infrastructure.Search @@ -748,6 +759,8 @@ namespace ErsatzTV.Infrastructure.Search
metadata.ReleaseDate.Value.ToString("yyyyMMdd"),
Field.Store.NO));
}
doc.Add(new StringField(AddedDateField, metadata.DateAdded.ToString("yyyyMMdd"), Field.Store.NO));
if (!string.IsNullOrWhiteSpace(metadata.Plot))
{
@ -827,6 +840,8 @@ namespace ErsatzTV.Infrastructure.Search @@ -827,6 +840,8 @@ namespace ErsatzTV.Infrastructure.Search
{
doc.Add(new Int32Field(MinutesField, (int)Math.Ceiling(version.Duration.TotalMinutes), Field.Store.NO));
}
doc.Add(new StringField(AddedDateField, metadata.DateAdded.ToString("yyyyMMdd"), Field.Store.NO));
foreach (Tag tag in metadata.Tags)
{
@ -871,6 +886,8 @@ namespace ErsatzTV.Infrastructure.Search @@ -871,6 +886,8 @@ namespace ErsatzTV.Infrastructure.Search
{
doc.Add(new Int32Field(MinutesField, (int)Math.Ceiling(version.Duration.TotalMinutes), Field.Store.NO));
}
doc.Add(new StringField(AddedDateField, metadata.DateAdded.ToString("yyyyMMdd"), Field.Store.NO));
if (!string.IsNullOrWhiteSpace(metadata.Album))
{

Loading…
Cancel
Save