From 125ae879f9e8153516e5e815ca9caff19dce72d6 Mon Sep 17 00:00:00 2001 From: Mike Goatly <4577868+mikegoatly@users.noreply.github.com> Date: Tue, 16 Jan 2024 22:43:44 +0000 Subject: [PATCH] V6.0.0 (#107) Among other things... * Use latest C# version * Added support for bracketed field names #76 * Added field score boosting #72 (#83) * Added field score boosting #72 * Added score boosting query syntax #72 * Add .NET 8 as a target * Item score boosting (#95) * Allow characters to be escaped in query syntax #85 * Removing ImmutableCollections (#97) * Speed up field collection prior to scoring (#102) * Added support for adding custom stemmers #82 (#103) * Apply field filters while collecting results * Filter documents at navigator level #105 * Added query part weight calculations #105 Refactor query match collection primitives --- .editorconfig | 6 +- Lifti.sln | 1 + azure-pipelines.yml | 18 +- docs/assets/icons/logo.svg | 5 + docs/content/en/_index.html | 2 +- .../content/en/docs/Custom stemmers/_index.md | 38 + .../content/en/docs/Getting started/_index.md | 16 +- .../docs/Getting started/indexing-objects.md | 10 +- .../WithDefaultThesaurus.md | 4 +- .../WithDefaultTokenization.md | 12 +- .../WithDuplicateItemBehavior.md | 20 - .../WithDuplicateKeyBehavior.md | 20 + .../WithIndexModificationAction.md | 10 +- .../WithObjectTokenization.md | 41 +- .../Index construction/WithQueryParser.md | 6 +- .../WithSimpleQueryParser.md | 6 +- .../Index construction/WithTextExtraction.md | 4 +- .../en/docs/Index construction/_index.md | 2 +- .../Indexing mutations/Batch Mutations.md | 2 +- .../en/docs/Indexing mutations/_index.md | 18 +- .../Serialization format/PreVersion6.md | 13 + .../Reference/Serialization format/_index.md | 12 +- .../docs/Searching/Search results/Scoring.md | 15 +- .../docs/Searching/Search results/_index.md | 22 +- .../extracting-matched-phrases.md | 8 +- docs/content/en/docs/Searching/_index.md | 4 - .../en/docs/Searching/field-information.md | 2 +- .../en/docs/Searching/lifti-query-syntax.md | 24 +- .../manually-constructing-queries.md | 14 +- .../en/docs/Searching/query-execution.md | 32 + docs/content/en/docs/Serialization/_index.md | 4 +- .../docs/Serialization/key-serialization.md | 2 +- docs/package-lock.json | 883 +++--------------- docs/package.json | 2 +- docs/static/images/v6-serialization.svg | 4 + global.json | 3 + samples/Blazor/Blazor.csproj | 8 +- .../Blazor/Services/WikipediaIndexService.cs | 2 +- samples/TestConsole/AutoCompleteSample.cs | 5 +- samples/TestConsole/Book.cs | 7 - samples/TestConsole/BookSample.cs | 42 +- samples/TestConsole/CompositeKey.cs | 14 - samples/TestConsole/CompositeKeySerializer.cs | 26 - samples/TestConsole/CustomStemmerSample.cs | 44 + samples/TestConsole/CustomerObjectSample.cs | 21 +- samples/TestConsole/FreshnessBoosting.cs | 43 + ...dexSerializationWithCustomKeySerializer.cs | 25 +- samples/TestConsole/MagnitudeBoosting.cs | 41 + samples/TestConsole/Program.cs | 13 +- samples/TestConsole/SampleBase.cs | 38 +- samples/TestConsole/ShardedIndexExample.cs | 2 +- samples/TestConsole/TestConsole.csproj | 5 +- samples/TestConsole/ThesaurusSample.cs | 6 +- samples/TestConsole/WikipediaSample.cs | 2 +- src/Lifti.Core/AssemblyInfo.cs | 1 + src/Lifti.Core/ChildNodeMap.cs | 186 ++++ src/Lifti.Core/ChildNodeMapMutation.cs | 133 +++ src/Lifti.Core/DocumentMatchCollector.cs | 95 ++ src/Lifti.Core/DocumentMetadata.cs | 93 ++ .../{ItemPhrases.cs => DocumentPhrases.cs} | 102 +- src/Lifti.Core/DocumentStatistics.cs | 26 +- src/Lifti.Core/DocumentTokenMatchMap.cs | 126 +++ .../DocumentTokenMatchMapMutation.cs | 93 ++ src/Lifti.Core/DuplicateItemBehavior.cs | 18 - src/Lifti.Core/DuplicateKeyBehavior.cs | 18 + src/Lifti.Core/ExceptionMessages.Designer.cs | 141 ++- src/Lifti.Core/ExceptionMessages.resx | 51 +- src/Lifti.Core/FullTextIndex.cs | 192 ++-- src/Lifti.Core/FullTextIndexBuilder.cs | 46 +- src/Lifti.Core/IFullTextIndex.cs | 51 +- src/Lifti.Core/IIdPool.cs | 33 - src/Lifti.Core/IIndexMetadata.cs | 86 ++ src/Lifti.Core/IIndexNodeFactory.cs | 9 +- src/Lifti.Core/IIndexSnapshot.cs | 20 +- src/Lifti.Core/IItemMetadata.cs | 30 - src/Lifti.Core/IItemStore.cs | 70 -- src/Lifti.Core/IObjectTokenization.cs | 16 - src/Lifti.Core/IObjectTypeConfiguration.cs | 26 + src/Lifti.Core/ISearchResults.cs | 69 +- src/Lifti.Core/ITokenLocation.cs | 23 + src/Lifti.Core/IdPool.cs | 88 +- src/Lifti.Core/IndexMetadata.cs | 245 +++++ src/Lifti.Core/IndexMutation.cs | 22 +- src/Lifti.Core/IndexNode.cs | 35 +- src/Lifti.Core/IndexNodeFactory.cs | 9 +- src/Lifti.Core/IndexNodeMutation.cs | 260 ++---- src/Lifti.Core/IndexOptions.cs | 16 +- src/Lifti.Core/IndexSnapshot.cs | 25 +- src/Lifti.Core/IndexStatistics.cs | 67 +- src/Lifti.Core/IndexedFieldDetails.cs | 61 +- src/Lifti.Core/IndexedFieldLookup.cs | 30 +- src/Lifti.Core/ItemMetadata.cs | 25 - src/Lifti.Core/ItemStore.cs | 92 -- src/Lifti.Core/Lifti.Core.csproj | 24 +- src/Lifti.Core/LiftiException.cs | 2 + src/Lifti.Core/PublicAPI.Unshipped.txt | 0 src/Lifti.Core/PublicApi/MarkShipped.cmd | 2 + src/Lifti.Core/PublicApi/MarkShipped.ps1 | 51 + .../PublicApi/PublicAPI.Shipped.txt | 730 +++++++++++++++ .../PublicApi/PublicAPI.Unshipped.txt | 1 + .../netstandard2}/PublicAPI.Shipped.txt | 526 ++++++----- .../netstandard2/PublicAPI.Unshipped.txt | 1 + .../CompositePositionalIntersectMerger.cs | 94 +- .../Querying/CompositeTokenLocation.cs | 108 +++ .../Querying/CompositeTokenMatchLocation.cs | 82 -- src/Lifti.Core/Querying/FieldMatch.cs | 88 -- .../Querying/FieldScoreBoostProvider.cs | 45 + .../Querying/IFieldScoreBoostProvider.cs | 13 + src/Lifti.Core/Querying/IIndexNavigator.cs | 82 +- .../Querying/IIndexNavigatorBookmark.cs | 8 +- src/Lifti.Core/Querying/IScorer.cs | 38 +- .../Querying/ITokenLocationMatch.cs | 26 - src/Lifti.Core/Querying/IndexNavigator.cs | 327 ++++--- src/Lifti.Core/Querying/IndexNavigatorPool.cs | 6 +- .../Querying/IntermediateQueryResult.cs | 138 ++- .../Querying/IntermediateQueryResultMerger.cs | 122 ++- src/Lifti.Core/Querying/IntersectMerger.cs | 52 +- src/Lifti.Core/Querying/OkapiBm25Scorer.cs | 123 +-- .../Querying/OkapiBm25ScorerFactory.cs | 24 +- .../Querying/PrecedingIntersectMerger.cs | 71 +- src/Lifti.Core/Querying/Query.cs | 20 +- src/Lifti.Core/Querying/QueryContext.cs | 23 + src/Lifti.Core/Querying/QueryParser.cs | 15 +- .../Querying/QueryParserException.cs | 4 +- .../QueryParts/AdjacentWordsQueryOperator.cs | 40 +- .../Querying/QueryParts/AndQueryOperator.cs | 11 +- .../QueryParts/BinaryQueryOperator.cs | 68 +- .../Querying/QueryParts/BracketedQueryPart.cs | 11 +- .../Querying/QueryParts/DoubleBufferedList.cs | 25 +- .../Querying/QueryParts/EmptyQueryPart.cs | 10 +- .../Querying/QueryParts/ExactWordQueryPart.cs | 32 +- .../QueryParts/FieldFilterQueryOperator.cs | 27 +- .../QueryParts/FuzzyMatchQueryPart.cs | 144 ++- .../Querying/QueryParts/IQueryContext.cs | 14 - .../Querying/QueryParts/IQueryPart.cs | 14 +- .../Querying/QueryParts/NearQueryOperator.cs | 17 +- .../Querying/QueryParts/OrQueryOperator.cs | 12 +- .../QueryParts/PrecedingNearQueryOperator.cs | 19 +- .../QueryParts/PrecedingQueryOperator.cs | 15 +- .../Querying/QueryParts/QueryContext.cs | 42 - .../QueryParts/ScoreBoostedQueryPart.cs | 56 ++ .../QueryParts/WildcardQueryFragment.cs | 5 +- .../Querying/QueryParts/WildcardQueryPart.cs | 155 ++- .../Querying/QueryParts/WordQueryPart.cs | 35 +- src/Lifti.Core/Querying/QueryToken.cs | 51 +- src/Lifti.Core/Querying/QueryTokenMatch.cs | 63 -- src/Lifti.Core/Querying/QueryTokenizer.cs | 205 +++- src/Lifti.Core/Querying/ScoredFieldMatch.cs | 196 +++- src/Lifti.Core/Querying/ScoredToken.cs | 46 +- .../Querying/SingleTokenLocationMatch.cs | 71 -- src/Lifti.Core/Querying/UnionMerger.cs | 66 +- .../Querying/WildcardQueryPartParser.cs | 10 +- src/Lifti.Core/ScoreBoostMetadata.cs | 86 ++ src/Lifti.Core/ScoreBoostValues.cs | 163 ++++ src/Lifti.Core/SearchResult.cs | 10 +- src/Lifti.Core/SearchResults.cs | 92 +- .../Serialization/Binary/BinarySerializer.cs | 18 +- .../Binary/DeserializationException.cs | 2 + .../Serialization/Binary/IIndexReader.cs | 23 - .../Serialization/Binary/IIndexSerializer.cs | 16 +- .../Serialization/Binary/IIndexWriter.cs | 10 - .../Serialization/Binary/IndexWriter.cs | 183 ++-- .../Serialization/Binary/V2IndexReader.cs | 71 +- .../Serialization/Binary/V5IndexReader.cs | 111 +-- .../Serialization/Binary/V6IndexReader.cs | 72 ++ .../DeserializedDataCollector.cs | 28 + .../DocumentMetadataCollector.cs | 29 + .../Serialization/IIndexDeserializer.cs | 23 + .../Serialization/IIndexSerializer.cs | 11 + .../Serialization/IndexDeserializerBase.cs | 122 +++ .../Serialization/IndexSerializerBase.cs | 133 +++ .../Serialization/SerializedFieldCollector.cs | 27 + .../Serialization/SerializedFieldIdMap.cs | 25 + .../Serialization/SerializedFieldInfo.cs | 7 + src/Lifti.Core/SerializedFieldInfo.cs | 7 - src/Lifti.Core/SharedPool.cs | 20 +- src/Lifti.Core/ThesaurusBuilder.cs | 4 +- src/Lifti.Core/TokenLocation.cs | 131 ++- src/Lifti.Core/Tokenization/IStemmer.cs | 25 +- src/Lifti.Core/Tokenization/IndexTokenizer.cs | 11 +- .../Objects/AsyncStringArrayFieldReader.cs | 17 +- .../Objects/AsyncStringFieldReader.cs | 17 +- .../Objects/ChildItemDynamicFieldReader.cs | 23 +- .../Objects/DictionaryDynamicFieldReader.cs | 19 +- .../Objects/DynamicFieldReader.cs | 24 +- .../Tokenization/Objects/FieldConfig.cs | 11 +- .../Tokenization/Objects/IFieldConfig.cs | 7 +- .../Objects/IStaticFieldReader.cs | 4 +- .../Objects/ObjectScoreBoostBuilder.cs | 76 ++ .../Objects/ObjectScoreBoostOptions.cs | 65 ++ .../Objects/ObjectTokenization.cs | 41 - .../Objects/ObjectTokenizationBuilder.cs | 238 +++-- .../Objects/ObjectTokenizationLookup.cs | 30 - .../Objects/ObjectTypeConfiguration.cs | 56 ++ .../Objects/ObjectTypeConfigurationLookup.cs | 32 + .../Tokenization/Objects/StaticFieldReader.cs | 8 +- ...ringArrayChildObjectDynamicFieldReader.cs} | 18 +- ...StringArrayDictionaryDynamicFieldReader.cs | 9 +- .../Objects/StringArrayFieldReader.cs | 15 +- ...=> StringChildObjectDynamicFieldReader.cs} | 17 +- .../StringDictionaryDynamicFieldReader.cs | 9 +- .../Tokenization/Objects/StringFieldReader.cs | 19 +- .../InputPreprocessorPipeline.cs | 10 +- .../Tokenization/Stemming/PorterStemmer.cs | 192 ++-- .../Stemming/StringBuilderExtensions.cs | 54 +- src/Lifti.Core/Tokenization/Thesaurus.cs | 7 +- src/Lifti.Core/Tokenization/Token.cs | 32 +- .../Tokenization/TokenExtensions.cs | 18 + src/Lifti.Core/Tokenization/TokenStore.cs | 2 +- src/Lifti.Core/TokenizationOptions.cs | 6 +- src/Lifti.Core/TokenizerBuilder.cs | 44 +- src/Lifti.Core/VirtualString.cs | 5 +- test/Lifti.Tests/ChildNodeMapTests.cs | 83 ++ .../Fakes/FakeFieldScoreBoostProvider.cs | 26 + test/Lifti.Tests/Fakes/FakeIndexMetadata.cs | 61 ++ test/Lifti.Tests/Fakes/FakeIndexSnapshot.cs | 25 + test/Lifti.Tests/Fakes/FakeItemStore.cs | 26 - test/Lifti.Tests/Fakes/FakeQueryContext.cs | 20 - test/Lifti.Tests/Fakes/FakeQueryParser.cs | 2 +- test/Lifti.Tests/Fakes/FakeScorer.cs | 7 +- .../Fakes/FakeTokenLocationMatch.cs | 26 - test/Lifti.Tests/FullTextIndexBuilderTests.cs | 37 +- test/Lifti.Tests/FullTextIndexTests.cs | 174 ++-- test/Lifti.Tests/GlobalSuppressions.cs | 8 + test/Lifti.Tests/IdPoolTests.cs | 169 ---- .../IndexInsertionMutationTests.cs | 60 +- test/Lifti.Tests/IndexMetadataTests.cs | 197 ++++ test/Lifti.Tests/IndexRemovalMutationTests.cs | 22 +- test/Lifti.Tests/IndexedFieldLookupTests.cs | 29 +- test/Lifti.Tests/Lifti.Tests.csproj | 4 +- test/Lifti.Tests/MutationTestBase.cs | 23 +- .../ObjectScoreBoostMetadataTests.cs | 93 ++ .../Querying/CompositeTokenLocationTests.cs | 75 ++ .../CompositeTokenMatchLocationTests.cs | 62 -- .../Querying/DocumentMatchCollectorTests.cs | 71 ++ .../Querying/FakeIndexNavigator.cs | 82 +- test/Lifti.Tests/Querying/FakeQueryPart.cs | 26 +- test/Lifti.Tests/Querying/FieldMatchTests.cs | 27 - .../Querying/IndexNavigatorTests.cs | 142 ++- .../Querying/IntermediateQueryResultTests.cs | 35 + .../Querying/OkapiBm25ScorerTests.cs | 130 ++- .../Querying/PrecedingIntersectMergerTests.cs | 6 +- test/Lifti.Tests/Querying/QueryParserTests.cs | 16 +- .../AdjacentWordsQueryOperatorTests.cs | 14 +- .../QueryParts/AndQueryOperatorTests.cs | 10 +- .../QueryParts/ExactWordQueryPartTests.cs | 73 +- .../FieldFilterQueryOperatorTests.cs | 25 +- .../QueryParts/FuzzyWordQueryPartTests.cs | 74 +- .../QueryParts/NearQueryOperatorTests.cs | 15 +- .../QueryParts/OrQueryOperatorTests.cs | 14 +- .../PrecedingNearQueryOperatorTests.cs | 15 +- .../QueryParts/PrecedingQueryOperatorTests.cs | 14 +- .../QueryParts/WildcardQueryPartTests.cs | 120 ++- test/Lifti.Tests/Querying/QueryTestBase.cs | 65 +- .../Querying/QueryTokenizerTests.cs | 148 ++- .../Querying/ScoredFieldMatchTests.cs | 70 ++ .../Querying/WildcardQueryPartParserTests.cs | 19 +- test/Lifti.Tests/ScoreBoostValuesTests.cs | 143 +++ test/Lifti.Tests/SearchResultsTests.cs | 16 +- .../Serialization/BinarySerializerTests.cs | 137 ++- test/Lifti.Tests/SharedPoolTests.cs | 12 +- test/Lifti.Tests/TestResources.Designer.cs | 10 + test/Lifti.Tests/TestResources.resx | 3 + test/Lifti.Tests/ThesaurusBuilderTests.cs | 3 +- test/Lifti.Tests/ThesaurusTests.cs | 16 +- .../Tokenization/IndexTokenizerTests.cs | 8 +- .../DictionaryDynamicFieldReaderTests.cs | 11 +- .../InputPreprocessorPipelineTests.cs | 2 +- test/Lifti.Tests/TokenizerBuilderTests.cs | 74 +- test/Lifti.Tests/V6.dat | Bin 0 -> 376 bytes test/Lifti.Tests/WordLocationTests.cs | 7 +- .../ChildNodeMapBenchmarks.cs | 109 +++ .../IndexPopulationTests.cs | 2 +- .../IndexSearchingBenchmarks.cs | 5 +- .../PerformanceProfiling.csproj | 1 + .../RemovalFromIndexBenchmarks.cs | 3 +- .../SerializationBenchmarks.cs | 6 +- ...artsWithMultiCharacterWildcardBenchmark.cs | 4 +- 278 files changed, 9725 insertions(+), 4536 deletions(-) create mode 100644 docs/assets/icons/logo.svg create mode 100644 docs/content/en/docs/Custom stemmers/_index.md delete mode 100644 docs/content/en/docs/Index construction/WithDuplicateItemBehavior.md create mode 100644 docs/content/en/docs/Index construction/WithDuplicateKeyBehavior.md create mode 100644 docs/content/en/docs/Reference/Serialization format/PreVersion6.md create mode 100644 docs/content/en/docs/Searching/query-execution.md create mode 100644 docs/static/images/v6-serialization.svg create mode 100644 global.json delete mode 100644 samples/TestConsole/Book.cs delete mode 100644 samples/TestConsole/CompositeKey.cs delete mode 100644 samples/TestConsole/CompositeKeySerializer.cs create mode 100644 samples/TestConsole/CustomStemmerSample.cs create mode 100644 samples/TestConsole/FreshnessBoosting.cs create mode 100644 samples/TestConsole/MagnitudeBoosting.cs create mode 100644 src/Lifti.Core/ChildNodeMap.cs create mode 100644 src/Lifti.Core/ChildNodeMapMutation.cs create mode 100644 src/Lifti.Core/DocumentMatchCollector.cs create mode 100644 src/Lifti.Core/DocumentMetadata.cs rename src/Lifti.Core/{ItemPhrases.cs => DocumentPhrases.cs} (58%) create mode 100644 src/Lifti.Core/DocumentTokenMatchMap.cs create mode 100644 src/Lifti.Core/DocumentTokenMatchMapMutation.cs delete mode 100644 src/Lifti.Core/DuplicateItemBehavior.cs create mode 100644 src/Lifti.Core/DuplicateKeyBehavior.cs delete mode 100644 src/Lifti.Core/IIdPool.cs create mode 100644 src/Lifti.Core/IIndexMetadata.cs delete mode 100644 src/Lifti.Core/IItemMetadata.cs delete mode 100644 src/Lifti.Core/IItemStore.cs delete mode 100644 src/Lifti.Core/IObjectTokenization.cs create mode 100644 src/Lifti.Core/IObjectTypeConfiguration.cs create mode 100644 src/Lifti.Core/ITokenLocation.cs create mode 100644 src/Lifti.Core/IndexMetadata.cs delete mode 100644 src/Lifti.Core/ItemMetadata.cs delete mode 100644 src/Lifti.Core/ItemStore.cs delete mode 100644 src/Lifti.Core/PublicAPI.Unshipped.txt create mode 100644 src/Lifti.Core/PublicApi/MarkShipped.cmd create mode 100644 src/Lifti.Core/PublicApi/MarkShipped.ps1 create mode 100644 src/Lifti.Core/PublicApi/PublicAPI.Shipped.txt create mode 100644 src/Lifti.Core/PublicApi/PublicAPI.Unshipped.txt rename src/Lifti.Core/{ => PublicApi/netstandard2}/PublicAPI.Shipped.txt (53%) create mode 100644 src/Lifti.Core/PublicApi/netstandard2/PublicAPI.Unshipped.txt create mode 100644 src/Lifti.Core/Querying/CompositeTokenLocation.cs delete mode 100644 src/Lifti.Core/Querying/CompositeTokenMatchLocation.cs delete mode 100644 src/Lifti.Core/Querying/FieldMatch.cs create mode 100644 src/Lifti.Core/Querying/FieldScoreBoostProvider.cs create mode 100644 src/Lifti.Core/Querying/IFieldScoreBoostProvider.cs delete mode 100644 src/Lifti.Core/Querying/ITokenLocationMatch.cs create mode 100644 src/Lifti.Core/Querying/QueryContext.cs delete mode 100644 src/Lifti.Core/Querying/QueryParts/IQueryContext.cs delete mode 100644 src/Lifti.Core/Querying/QueryParts/QueryContext.cs create mode 100644 src/Lifti.Core/Querying/QueryParts/ScoreBoostedQueryPart.cs delete mode 100644 src/Lifti.Core/Querying/QueryTokenMatch.cs delete mode 100644 src/Lifti.Core/Querying/SingleTokenLocationMatch.cs create mode 100644 src/Lifti.Core/ScoreBoostMetadata.cs create mode 100644 src/Lifti.Core/ScoreBoostValues.cs delete mode 100644 src/Lifti.Core/Serialization/Binary/IIndexReader.cs delete mode 100644 src/Lifti.Core/Serialization/Binary/IIndexWriter.cs create mode 100644 src/Lifti.Core/Serialization/Binary/V6IndexReader.cs create mode 100644 src/Lifti.Core/Serialization/DeserializedDataCollector.cs create mode 100644 src/Lifti.Core/Serialization/DocumentMetadataCollector.cs create mode 100644 src/Lifti.Core/Serialization/IIndexDeserializer.cs create mode 100644 src/Lifti.Core/Serialization/IIndexSerializer.cs create mode 100644 src/Lifti.Core/Serialization/IndexDeserializerBase.cs create mode 100644 src/Lifti.Core/Serialization/IndexSerializerBase.cs create mode 100644 src/Lifti.Core/Serialization/SerializedFieldCollector.cs create mode 100644 src/Lifti.Core/Serialization/SerializedFieldIdMap.cs create mode 100644 src/Lifti.Core/Serialization/SerializedFieldInfo.cs delete mode 100644 src/Lifti.Core/SerializedFieldInfo.cs create mode 100644 src/Lifti.Core/Tokenization/Objects/ObjectScoreBoostBuilder.cs create mode 100644 src/Lifti.Core/Tokenization/Objects/ObjectScoreBoostOptions.cs delete mode 100644 src/Lifti.Core/Tokenization/Objects/ObjectTokenization.cs delete mode 100644 src/Lifti.Core/Tokenization/Objects/ObjectTokenizationLookup.cs create mode 100644 src/Lifti.Core/Tokenization/Objects/ObjectTypeConfiguration.cs create mode 100644 src/Lifti.Core/Tokenization/Objects/ObjectTypeConfigurationLookup.cs rename src/Lifti.Core/Tokenization/Objects/{StringArrayChildItemDynamicFieldReader.cs => StringArrayChildObjectDynamicFieldReader.cs} (53%) rename src/Lifti.Core/Tokenization/Objects/{StringChildItemDynamicFieldReader.cs => StringChildObjectDynamicFieldReader.cs} (53%) create mode 100644 src/Lifti.Core/Tokenization/TokenExtensions.cs create mode 100644 test/Lifti.Tests/ChildNodeMapTests.cs create mode 100644 test/Lifti.Tests/Fakes/FakeFieldScoreBoostProvider.cs create mode 100644 test/Lifti.Tests/Fakes/FakeIndexMetadata.cs create mode 100644 test/Lifti.Tests/Fakes/FakeIndexSnapshot.cs delete mode 100644 test/Lifti.Tests/Fakes/FakeItemStore.cs delete mode 100644 test/Lifti.Tests/Fakes/FakeQueryContext.cs delete mode 100644 test/Lifti.Tests/Fakes/FakeTokenLocationMatch.cs create mode 100644 test/Lifti.Tests/GlobalSuppressions.cs delete mode 100644 test/Lifti.Tests/IdPoolTests.cs create mode 100644 test/Lifti.Tests/IndexMetadataTests.cs create mode 100644 test/Lifti.Tests/ObjectScoreBoostMetadataTests.cs create mode 100644 test/Lifti.Tests/Querying/CompositeTokenLocationTests.cs delete mode 100644 test/Lifti.Tests/Querying/CompositeTokenMatchLocationTests.cs create mode 100644 test/Lifti.Tests/Querying/DocumentMatchCollectorTests.cs delete mode 100644 test/Lifti.Tests/Querying/FieldMatchTests.cs create mode 100644 test/Lifti.Tests/Querying/IntermediateQueryResultTests.cs create mode 100644 test/Lifti.Tests/Querying/ScoredFieldMatchTests.cs create mode 100644 test/Lifti.Tests/ScoreBoostValuesTests.cs create mode 100644 test/Lifti.Tests/V6.dat create mode 100644 test/PerformanceProfiling/ChildNodeMapBenchmarks.cs diff --git a/.editorconfig b/.editorconfig index 13f0ad73..b3b9f81a 100644 --- a/.editorconfig +++ b/.editorconfig @@ -100,7 +100,7 @@ csharp_prefer_simple_using_statement = true:suggestion csharp_prefer_simple_default_expression = true:suggestion csharp_style_pattern_local_over_anonymous_function = true:suggestion csharp_style_prefer_index_operator = false:suggestion -csharp_style_prefer_range_operator = true:suggestion +csharp_style_prefer_range_operator = false:suggestion csharp_style_unused_value_assignment_preference = discard_variable:none csharp_style_unused_value_expression_statement_preference = discard_variable:none @@ -213,6 +213,7 @@ csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimenta csharp_style_prefer_pattern_matching = true:silent csharp_style_prefer_not_pattern = true:suggestion csharp_style_prefer_extended_property_pattern = true:suggestion +csharp_style_prefer_primary_constructors = false:suggestion [*.{cs,vb}] dotnet_style_operator_placement_when_wrapping = beginning_of_line @@ -248,4 +249,5 @@ dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent dotnet_style_qualification_for_field = true:silent dotnet_style_qualification_for_property = true:silent dotnet_style_qualification_for_method = true:silent -dotnet_style_qualification_for_event = true:silent \ No newline at end of file +dotnet_style_qualification_for_event = true:silent +dotnet_style_prefer_collection_expression = true:suggestion \ No newline at end of file diff --git a/Lifti.sln b/Lifti.sln index dcefc82e..f294c7fa 100644 --- a/Lifti.sln +++ b/Lifti.sln @@ -13,6 +13,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution .gitattributes = .gitattributes .gitignore = .gitignore azure-pipelines.yml = azure-pipelines.yml + global.json = global.json LICENSE = LICENSE README.md = README.md EndProjectSection diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 3df1ed19..9a142408 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -8,9 +8,9 @@ trigger: - test variables: - majorVersion: 5 + majorVersion: 6 minorVersion: 0 - patchVersion: 0 + patchVersion: 1 project: src/Lifti.Core/Lifti.Core.csproj testProject: test/Lifti.Tests/Lifti.Tests.csproj buildConfiguration: 'Release' @@ -36,6 +36,11 @@ stages: inputs: packageType: 'sdk' version: '7.0.x' + - task: UseDotNet@2 + displayName: "Use .NET 8" + inputs: + packageType: 'sdk' + version: '8.0.x' - task: DotNetCoreCLI@2 displayName: "NuGet Restore" inputs: @@ -82,7 +87,7 @@ stages: - stage: PublishCINugetPackage displayName: Publish to CI feed dependsOn: Build - condition: succeeded() + condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master')) jobs: - job: PublishCI @@ -95,12 +100,13 @@ stages: - download: current artifact: 'packages' - - task: DotNetCoreCLI@2 + - task: NuGetCommand@2 + displayName: 'Push NuGet Package' inputs: command: 'push' packagesToPush: '$(Pipeline.Workspace)/packages/ci/*.nupkg' - nuGetFeedType: 'internal' - publishVstsFeed: '21c23043-21b0-4e5a-8557-00b88fc52fd4/9f4e269d-a35a-4657-b2a3-b56b01c01f8c' + nuGetFeedType: 'external' + publishFeedCredentials: 'NuGet' - stage: 'PublishReleaseNuGetPackage' displayName: 'Publish Release NuGet Package' diff --git a/docs/assets/icons/logo.svg b/docs/assets/icons/logo.svg new file mode 100644 index 00000000..9260d197 --- /dev/null +++ b/docs/assets/icons/logo.svg @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/docs/content/en/_index.html b/docs/content/en/_index.html index f8de2607..07cde55b 100644 --- a/docs/content/en/_index.html +++ b/docs/content/en/_index.html @@ -3,7 +3,7 @@ linkTitle = "LIFTI" +++ -{{< blocks/cover title="LIFTI" image_anchor="top" height="full" color="orange" >}} +{{< blocks/cover title="LIFTI" image_anchor="top" height="full" >}}