public void UsingDuplicateFieldNameShouldThrowException() { IObjectTokenization config = new ObjectTokenizationBuilder <string, string>() .WithField("Field1", o => o) .WithField("Field2", o => o) .WithField("Field1", o => o) .WithKey(i => i) .Build(); Assert.Throws <LiftiException>(() => new IndexedFieldLookup(config.GetConfiguredFields(), new PlainTextExtractor(), Tokenizer.Default)) .Message.Should().Be("Duplicate field name used: Field1. Field names must be unique across all item types registered with an index."); }
/// <summary> /// Creates an <see cref="ObjectTokenization{TItem, TKey}"/> configuration entry for an item of type <typeparamref name="TItem"/> /// in the index. /// </summary> /// <param name="optionsBuilder"> /// A delegate capable of specifying all the required options for the item tokenization options. /// </param> public FullTextIndexBuilder <TKey> WithObjectTokenization <TItem>(Func <ObjectTokenizationBuilder <TItem, TKey>, ObjectTokenizationBuilder <TItem, TKey> > optionsBuilder) { if (optionsBuilder is null) { throw new ArgumentNullException(nameof(optionsBuilder)); } var builder = new ObjectTokenizationBuilder <TItem, TKey>(); this.itemTokenizationOptions.Add(optionsBuilder(builder).Build()); return(this); }
public void UsingMoreThan255IdsShouldThrowException() { var itemConfigBuilder = new ObjectTokenizationBuilder <string, string>() .WithKey(i => i); for (var i = 0; i < 256; i++) { itemConfigBuilder = itemConfigBuilder.WithField("Field" + i, r => r); } IObjectTokenization config = itemConfigBuilder.Build(); Assert.Throws <LiftiException>(() => new IndexedFieldLookup(config.GetConfiguredFields(), new PlainTextExtractor(), Tokenizer.Default)) .Message.Should().Be("Only 255 distinct fields can currently be indexed"); }
public IndexedFieldLookupTests() { IObjectTokenization itemConfig = new ObjectTokenizationBuilder <string, string>() .WithKey(i => i) .WithField("Field1", r => r) .WithField("Field2", r => r) .WithField("Field3", r => r) .WithField("FieldX", r => r, o => o.WithStemming()) .WithField("FieldY", r => r) .Build(); this.sut = new IndexedFieldLookup( itemConfig.GetConfiguredFields(), new PlainTextExtractor(), Tokenizer.Default); }