[MM-20979] Add first implementation of the Bleve search engine (#14562)

* [MM-20979] Add first implementation of the Bleve search engine

* Fix i18n

* Migrate searchengine utils tests

* Fix linter

* Don't add allTermsQ if both termQueries and notTermQueries are empty

* Fix test that should work if user is system admin

* Modify naming according to review comments

* Abstract getIndexDir function

* Extracting bleve engine name as a constant

* Merge both Indexer interfaces into one

* Add worker stopped message

* Allow worker to be started/stopped with config change

* Use constants for index names

* Modify test order

* Fix linter

* Trying to unlock the CI
Этот коммит содержится в:
Miguel de la Cruz
2020-05-20 01:29:55 +02:00
коммит произвёл GitHub
родитель 8d0343d2eb
Коммит 0154b8059b
564 изменённых файлов: 287569 добавлений и 762 удалений

Просмотреть файл

@@ -30,12 +30,12 @@ var searchChannelStoreTests = []searchTest{
{
Name: "Should be able to autocomplete a channel by a part of its name when has parts splitted by _ character",
Fn: testAutocompleteChannelByNameSplittedWithUnderscoreChar,
Tags: []string{ENGINE_MYSQL, ENGINE_ELASTICSEARCH},
Tags: []string{ENGINE_MYSQL, ENGINE_ELASTICSEARCH, ENGINE_BLEVE},
},
{
Name: "Should be able to autocomplete a channel by a part of its display name when has parts splitted by whitespace character",
Fn: testAutocompleteChannelByDisplayNameSplittedByWhitespaces,
Tags: []string{ENGINE_MYSQL, ENGINE_ELASTICSEARCH},
Tags: []string{ENGINE_MYSQL, ENGINE_ELASTICSEARCH, ENGINE_BLEVE},
},
{
Name: "Should be able to autocomplete retrieving all channels if the term is empty",

Просмотреть файл

@@ -26,7 +26,7 @@ var searchPostStoreTests = []searchTest{
{
Name: "Should be able to search for exact phrases in quotes",
Fn: testSearchExactPhraseInQuotes,
Tags: []string{ENGINE_ALL},
Tags: []string{ENGINE_POSTGRES, ENGINE_MYSQL, ENGINE_ELASTICSEARCH},
},
{
Name: "Should be able to search for email addresses with or without quotes",
@@ -69,8 +69,8 @@ var searchPostStoreTests = []searchTest{
Tags: []string{ENGINE_ALL},
},
{
Name: "Should be able to filter messages written on a specific date",
Fn: testFilterMessagesInSpecificDate,
Name: "Should be able to filter messages written after a specific date",
Fn: testFilterMessagesAfterSpecificDate,
Tags: []string{ENGINE_ALL},
},
{
@@ -79,8 +79,8 @@ var searchPostStoreTests = []searchTest{
Tags: []string{ENGINE_ALL},
},
{
Name: "Should be able to filter messages written after a specific date",
Fn: testFilterMessagesAfterSpecificDate,
Name: "Should be able to filter messages written on a specific date",
Fn: testFilterMessagesInSpecificDate,
Tags: []string{ENGINE_ALL},
},
{
@@ -111,7 +111,7 @@ var searchPostStoreTests = []searchTest{
{
Name: "Should support search with wildcards",
Fn: testSupportWildcards,
Tags: []string{ENGINE_ALL},
Tags: []string{ENGINE_POSTGRES, ENGINE_MYSQL, ENGINE_ELASTICSEARCH},
},
{
Name: "Should not support search with preceding wildcards",

Просмотреть файл

@@ -15,6 +15,7 @@ const (
ENGINE_MYSQL = "mysql"
ENGINE_POSTGRES = "postgres"
ENGINE_ELASTICSEARCH = "elasticsearch"
ENGINE_BLEVE = "bleve"
)
type SearchTestEngine struct {

Просмотреть файл

@@ -20,12 +20,12 @@ var searchUserStoreTests = []searchTest{
{
Name: "Should honor channel restrictions when autocompleting users",
Fn: testHonorChannelRestrictionsAutocompletingUsers,
Tags: []string{ENGINE_ELASTICSEARCH},
Tags: []string{ENGINE_ELASTICSEARCH, ENGINE_BLEVE},
},
{
Name: "Should honor team restrictions when autocompleting users",
Fn: testHonorTeamRestrictionsAutocompletingUsers,
Tags: []string{ENGINE_ELASTICSEARCH},
Tags: []string{ENGINE_ELASTICSEARCH, ENGINE_BLEVE},
},
{
Name: "Should return nothing if the user can't access the channels of a given search",
@@ -69,17 +69,17 @@ var searchUserStoreTests = []searchTest{
{
Name: "Should be able to autocomplete a user by part of its username splitted by Dot",
Fn: testAutocompleteUserByUsernameWithDot,
Tags: []string{ENGINE_ELASTICSEARCH},
Tags: []string{ENGINE_ELASTICSEARCH, ENGINE_BLEVE},
},
{
Name: "Should be able to autocomplete a user by part of its username splitted by underscore",
Fn: testAutocompleteUserByUsernameWithUnderscore,
Tags: []string{ENGINE_ELASTICSEARCH},
Tags: []string{ENGINE_ELASTICSEARCH, ENGINE_BLEVE},
},
{
Name: "Should be able to autocomplete a user by part of its username splitted by hyphen",
Fn: testAutocompleteUserByUsernameWithHyphen,
Tags: []string{ENGINE_ELASTICSEARCH},
Tags: []string{ENGINE_ELASTICSEARCH, ENGINE_BLEVE},
},
{
Name: "Should escape the percentage character",