Make repository indexer tokenize by camel case selectable
This commit is contained in:
parent
6c0c5c5310
commit
a8d4e40af5
4 changed files with 28 additions and 12 deletions
|
@ -296,6 +296,9 @@ REPO_INDEXER_ENABLED = false
|
||||||
REPO_INDEXER_PATH = indexers/repos.bleve
|
REPO_INDEXER_PATH = indexers/repos.bleve
|
||||||
UPDATE_BUFFER_LEN = 20
|
UPDATE_BUFFER_LEN = 20
|
||||||
MAX_FILE_SIZE = 1048576
|
MAX_FILE_SIZE = 1048576
|
||||||
|
; Break camel case names into separate words for indexing.
|
||||||
|
; It's imperative to delete any previous indexes from REPO_INDEXER_PATH after changing this setting.
|
||||||
|
REPO_INDEXER_CAMEL_CASE = true
|
||||||
|
|
||||||
[admin]
|
[admin]
|
||||||
; Disallow regular (non-admin) users from creating organizations.
|
; Disallow regular (non-admin) users from creating organizations.
|
||||||
|
|
|
@ -179,6 +179,8 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
|
||||||
- `REPO_INDEXER_PATH`: **indexers/repos.bleve**: Index file used for code search.
|
- `REPO_INDEXER_PATH`: **indexers/repos.bleve**: Index file used for code search.
|
||||||
- `UPDATE_BUFFER_LEN`: **20**: Buffer length of index request.
|
- `UPDATE_BUFFER_LEN`: **20**: Buffer length of index request.
|
||||||
- `MAX_FILE_SIZE`: **1048576**: Maximum size in bytes of files to be indexed.
|
- `MAX_FILE_SIZE`: **1048576**: Maximum size in bytes of files to be indexed.
|
||||||
|
- `REPO_INDEXER_CAMEL_CASE`: **true**: When `REPO_INDEXER_CAMEL_CASE` is true, repository indexer will break camel case into words, so thisCameCaseName will be indexed as this, camel, case, name. It's imperative to delete any previous indexes from REPO_INDEXER_PATH after changing this setting.
|
||||||
|
|
||||||
|
|
||||||
## Security (`security`)
|
## Security (`security`)
|
||||||
|
|
||||||
|
|
|
@ -107,11 +107,20 @@ func createRepoIndexer(path string, latestVersion int) error {
|
||||||
mapping := bleve.NewIndexMapping()
|
mapping := bleve.NewIndexMapping()
|
||||||
if err = addUnicodeNormalizeTokenFilter(mapping); err != nil {
|
if err = addUnicodeNormalizeTokenFilter(mapping); err != nil {
|
||||||
return err
|
return err
|
||||||
} else if err = mapping.AddCustomAnalyzer(repoIndexerAnalyzer, map[string]interface{}{
|
}
|
||||||
|
|
||||||
|
var tokenFilters []string
|
||||||
|
if setting.Indexer.RepoUseCamelCaseTokenizer {
|
||||||
|
tokenFilters = []string{unicodeNormalizeName, camelcase.Name, lowercase.Name, unique.Name}
|
||||||
|
} else {
|
||||||
|
tokenFilters = []string{unicodeNormalizeName, lowercase.Name, unique.Name}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = mapping.AddCustomAnalyzer(repoIndexerAnalyzer, map[string]interface{}{
|
||||||
"type": custom.Name,
|
"type": custom.Name,
|
||||||
"char_filters": []string{},
|
"char_filters": []string{},
|
||||||
"tokenizer": unicode.Name,
|
"tokenizer": unicode.Name,
|
||||||
"token_filters": []string{unicodeNormalizeName, camelcase.Name, lowercase.Name, unique.Name},
|
"token_filters": tokenFilters,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,16 +19,17 @@ const (
|
||||||
var (
|
var (
|
||||||
// Indexer settings
|
// Indexer settings
|
||||||
Indexer = struct {
|
Indexer = struct {
|
||||||
IssueType string
|
IssueType string
|
||||||
IssuePath string
|
IssuePath string
|
||||||
RepoIndexerEnabled bool
|
RepoIndexerEnabled bool
|
||||||
RepoPath string
|
RepoPath string
|
||||||
UpdateQueueLength int
|
UpdateQueueLength int
|
||||||
MaxIndexerFileSize int64
|
MaxIndexerFileSize int64
|
||||||
IssueQueueType string
|
IssueQueueType string
|
||||||
IssueQueueDir string
|
IssueQueueDir string
|
||||||
IssueQueueConnStr string
|
IssueQueueConnStr string
|
||||||
IssueQueueBatchNumber int
|
IssueQueueBatchNumber int
|
||||||
|
RepoUseCamelCaseTokenizer bool
|
||||||
}{
|
}{
|
||||||
IssueType: "bleve",
|
IssueType: "bleve",
|
||||||
IssuePath: "indexers/issues.bleve",
|
IssuePath: "indexers/issues.bleve",
|
||||||
|
@ -53,6 +54,7 @@ func newIndexerService() {
|
||||||
}
|
}
|
||||||
Indexer.UpdateQueueLength = sec.Key("UPDATE_BUFFER_LEN").MustInt(20)
|
Indexer.UpdateQueueLength = sec.Key("UPDATE_BUFFER_LEN").MustInt(20)
|
||||||
Indexer.MaxIndexerFileSize = sec.Key("MAX_FILE_SIZE").MustInt64(1024 * 1024)
|
Indexer.MaxIndexerFileSize = sec.Key("MAX_FILE_SIZE").MustInt64(1024 * 1024)
|
||||||
|
Indexer.RepoUseCamelCaseTokenizer = sec.Key("REPO_INDEXER_CAMEL_CASE").MustBool(true)
|
||||||
Indexer.IssueQueueType = sec.Key("ISSUE_INDEXER_QUEUE_TYPE").MustString(LevelQueueType)
|
Indexer.IssueQueueType = sec.Key("ISSUE_INDEXER_QUEUE_TYPE").MustString(LevelQueueType)
|
||||||
Indexer.IssueQueueDir = sec.Key("ISSUE_INDEXER_QUEUE_DIR").MustString(path.Join(AppDataPath, "indexers/issues.queue"))
|
Indexer.IssueQueueDir = sec.Key("ISSUE_INDEXER_QUEUE_DIR").MustString(path.Join(AppDataPath, "indexers/issues.queue"))
|
||||||
Indexer.IssueQueueConnStr = sec.Key("ISSUE_INDEXER_QUEUE_CONN_STR").MustString(path.Join(AppDataPath, ""))
|
Indexer.IssueQueueConnStr = sec.Key("ISSUE_INDEXER_QUEUE_CONN_STR").MustString(path.Join(AppDataPath, ""))
|
||||||
|
|
Loading…
Reference in a new issue