• Tommy Hanks's avatar
    Bring NRediSearch "even" with JRediSearch (#1267) · 9b8bdf36
    Tommy Hanks authored
    * The casing in the error message probably changed.
    
    I checked the RediSearch source and found that it's been "Unsupported
    language" since at least August 28, 2018.
    
    * `FT.OPTIMIZE` has been deprecated.
    
    Index optimizations are now handled by the internal garbage collector in
    the background.
    
    https://oss.redislabs.com/redisearch/Commands.html#ftoptimize
    
    * Started work on porting the aggregation builder class and test from
    JRediSearch.
    
    * Ported in static support methods.
    
    * Added Load, Limit, and SortBy
    
    * Finished adding the sortby's
    
    * Group by and apply have been ported.
    
    * Added in the `Filter` method.
    
    * Added in `Cursor` builder method.
    
    Made the private `args` member naming more consistent the rest of the
    project by prefixing with an underscore.
    
    * Made this a privately settable property as this is basically what the
    Java version had.
    
    * Implemented `ArgsString` property here. This is from the Java
    `getArgsString`
    
    * Args list is now accessible just like the Java version.
    
    * Added in serialize redis args method...
    
    * Ported `TestAggregations` test from JRediSearch.
    
    Kept everything as close to the original as possible.
    
    * Marked these methods obsolete in favor of the ones that use the
    AggregationBuilder.
    
    * Introduced new overloads for the `Aggregate` method.
    
    Marked the obsolete unit test as obsolete.
    
    * For completeness I added in the commands that should be issued by the
    setup portion of this test.
    
    * Ported in the `TestApplyAndFilterAggregations` test.
    
    * Porting over the support for dealing with aggregate cursors.
    
    * Initial pass at implementing cursor delete.
    
    * Initial pass at implementing `CursorRead` and `CursorReadAsync`
    
    * Fixed issue with supplying the Redisearch command with sorting.
    
    Fixed some assertions...
    
    * Added support for return fields.
    
    * Fixed apparently typo.
    
    * Moved this test class to be more consistent with the JRedisearch
    library.
    
    * Cleaned up imports here.
    
    * Initial pass at porting the tag for `AlterIndex`.
    
    * Current progress porting the FT.ALTER command.
    
    * Added in a new type for capturing the FT.INFO result...
    
    * The test for AlterIndex (Add) is complete.
    
    * Altered test here to meet assertions from JRediSearch.
    
    * Ported support for the FT.MGET command.
    
    * Ported the Suggestion with Builder from JRediSearch.
    
    * Ported SuggestionOptions.
    
    * Further fleshed out the suggestion options using JRediSearch as a guide.
    
    * Ported over the expanded Suggestions functionality from JRediSearch.
    
    * Ported this from JRediSearch.
    
    * Ported more tests from JRediSearch.
    
    Fixed some silly bugs...
    
    * Ported the last three auto suggest tests from JRediSearch.
    
    * More tests ported from JRediSearch.
    
    * Implemented ability to add multiple documents at once. Started on
    deleting multiple documents at once...
    
    * In order to match the functionality found in JRediSearch, I'm catching
    RedisServerExceptions that contain the message "Document already in
    index".
    
    * Added support for the `INKEYS` search query modifier.
    
    * Ported in a covering test for the AggregationBuilder.
    
    * Cleaned up builder access in the Suggestion and SuggestionOptions
    classes.
    
    * Refactored IndexOptions to make them behave more like JRediSearch.
    
    Removed NOSCOREIDX as that has been deprecated.
    
    * PR feedback.
    
    Marked AggregationBuilder as sealed because (at least initially) we
    don't expect any inheritance here.
    
    Dropped the call to `ToString` when appending the value for "MAX" to a
    SortBy clause because it isn't needed.
    
    Changed `ArgsString` to a method to indicate that we're not simply
    exposing internal state. Made the method internal as it's present for
    test purposes.
    
    Removed the `Args` property because it's not clear that we need it. It
    was ported from JRediSearch because it was there.
    
    * Simplified this with a default value.
    
    * Removed calls to `ToString` in order to allow the library to worry about
    proper formatting.
    
    * Combined constructors here to keep things a bit simpler.
    
    * Cleaned up the unused import there.
    
    * Readded the `OptimizeIndex` and `OptimizeIndexAsync` methods here to
    preserve backwards compatibility.
    
    * Returning Array.Empty<Document> instead of a new empty array each time.
    
    * Sealed the suggestion class as there should be no reason (currently) for
    anything to inherit from it.
    
    Cleaned up how we're ensuring that an object to compare is not null and
    is of an appropriate type.
    
    Fixed equality check so that it doesn't blow up on null values (payload
    specifically).
    
    * Converted the class `With` to be an enum.
    
    * Now looking up these values on demand.
    
    * Reintroduced the original GetInfo API methods and changed the new ones
    to GetInfoParsed and GetInfoParsedAsync.
    
    * Revertered changes that turned ConfiguredIndexOptions into IndexOptions.
    
    Added in `SetNoStopwords` method to match the JRediSearch api as well as
    provide a conveinient means for keeping the default index options AND
    specifying that no stopwords be considered.
    
    Fixed `TestStopwords` unit test by specifying `STOPWORDS 0` by calling
    `SetNoStopwords` which adds the `DisableStopWords` option to the
    configured index options.
    
    * Since this optimization doesn't exist anymore it should be removed from
    your index definitions.
    
    * Added back the original get suggestions method, but this time it calls
    the new version which leverages the suggestion builder.
    
    Added a small covering test.
    
    * Consolidated the constructors here as suggested by Marc.
    Co-authored-by: 's avatarNick Craver <nrcraver@gmail.com>
    Co-authored-by: 's avatarMarc Gravell <marc.gravell@gmail.com>
    9b8bdf36
Name
Last commit
Last update
..
Issue940.cs Loading commit data...