Sebastian Dammark
10/14/2024, 11:03 AMIBooleanOperation query = index.Searcher.CreatePublishedQuery().And().NodeTypeAlias(alias.ToLower());
Jemayn
10/14/2024, 11:16 AMSebastian Dammark
10/14/2024, 11:30 AMJemayn
10/14/2024, 11:35 AMcsharp
IBooleanOperation query = index
.Searcher.CreateQuery()
.NodeTypeAlias("events")
.And()
.RangeQuery<DateTime>(["startTime"], DateTime.MinValue, DateTime.Now);
That would query for all documents of the nodeType events and the startTime between DateTime.MinValue and DateTime.NowSebastian Dammark
10/14/2024, 11:40 AMJemayn
10/14/2024, 11:46 AMcsharp
public class ConfigureExternalIndexOptions : IConfigureNamedOptions<LuceneDirectoryIndexOptions>
{
public void Configure(string? name, LuceneDirectoryIndexOptions options)
{
if (name is not Constants.UmbracoIndexes.ExternalIndexName)
return;
options.FieldDefinitions.AddOrUpdate(
new FieldDefinition("startTime", FieldDefinitionTypes.DateTime)
);
}
public void Configure(LuceneDirectoryIndexOptions options)
{
Configure(string.Empty, options);
}
}
Jemayn
10/14/2024, 11:46 AMcsharp
builder.Services.AddTransient<IConfigureOptions<LuceneDirectoryIndexOptions>, ConfigureExternalIndexOptions>();
Sebastian Dammark
10/14/2024, 12:22 PMCould not perform a range query on the field pageDate, it's value type is Examine.Lucene.Indexing.FullTextType
.
It's like the composer is never picked up.
I've attached a screendump of the composer and the IndexOptions.
It's an Umbraco V13 if it makesany difference
https://cdn.discordapp.com/attachments/1295341227687936064/1295360958780411975/image.png?ex=670e5e67&is=670d0ce7&hm=4fa5c1061215eb9de29a68ca3a94df256d161304a098e2b0251f639bd2b41db8&Jemayn
10/14/2024, 12:27 PMSebastian Dammark
10/14/2024, 12:38 PMpublic void Configure(string? name, LuceneDirectoryIndexOptions options)
{
if (name != Constants.UmbracoIndexes.ExternalIndexName) return;
options.FieldDefinitions.AddOrUpdate(new FieldDefinition("pageDate_da", FieldDefinitionTypes.DateTime));
options.FieldDefinitions.AddOrUpdate(new FieldDefinition("pageDate_en", FieldDefinitionTypes.DateTime));
}
Jemayn
10/14/2024, 12:58 PMcsharp
var languages = _localizationService.GetAllLanguages().ToList();
foreach (var language in languages)
{
options.FieldDefinitions.AddOrUpdate(
new FieldDefinition(
$"nodeName_{language.CultureInfo}",
FieldDefinitionTypes.FullTextSortable
)
);