Skip to content

Commit a8d4e40

Browse files
author
Guillermo Prandi
committed
Make repository indexer tokenize by camel case selectable
1 parent 6c0c5c5 commit a8d4e40

File tree

4 files changed

+28
-12
lines changed

4 files changed

+28
-12
lines changed

custom/conf/app.ini.sample

+3
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,9 @@ REPO_INDEXER_ENABLED = false
296296
REPO_INDEXER_PATH = indexers/repos.bleve
297297
UPDATE_BUFFER_LEN = 20
298298
MAX_FILE_SIZE = 1048576
299+
; Break camel case names into separate words for indexing.
300+
; It's imperative to delete any previous indexes from REPO_INDEXER_PATH after changing this setting.
301+
REPO_INDEXER_CAMEL_CASE = true
299302

300303
[admin]
301304
; Disallow regular (non-admin) users from creating organizations.

docs/content/doc/advanced/config-cheat-sheet.en-us.md

+2
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,8 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
179179
- `REPO_INDEXER_PATH`: **indexers/repos.bleve**: Index file used for code search.
180180
- `UPDATE_BUFFER_LEN`: **20**: Buffer length of index request.
181181
- `MAX_FILE_SIZE`: **1048576**: Maximum size in bytes of files to be indexed.
182+
- `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.
183+
182184

183185
## Security (`security`)
184186

modules/indexer/repo.go

+11-2
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,20 @@ func createRepoIndexer(path string, latestVersion int) error {
107107
mapping := bleve.NewIndexMapping()
108108
if err = addUnicodeNormalizeTokenFilter(mapping); err != nil {
109109
return err
110-
} else if err = mapping.AddCustomAnalyzer(repoIndexerAnalyzer, map[string]interface{}{
110+
}
111+
112+
var tokenFilters []string
113+
if setting.Indexer.RepoUseCamelCaseTokenizer {
114+
tokenFilters = []string{unicodeNormalizeName, camelcase.Name, lowercase.Name, unique.Name}
115+
} else {
116+
tokenFilters = []string{unicodeNormalizeName, lowercase.Name, unique.Name}
117+
}
118+
119+
if err = mapping.AddCustomAnalyzer(repoIndexerAnalyzer, map[string]interface{}{
111120
"type": custom.Name,
112121
"char_filters": []string{},
113122
"tokenizer": unicode.Name,
114-
"token_filters": []string{unicodeNormalizeName, camelcase.Name, lowercase.Name, unique.Name},
123+
"token_filters": tokenFilters,
115124
}); err != nil {
116125
return err
117126
}

modules/setting/indexer.go

+12-10
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,17 @@ const (
1919
var (
2020
// Indexer settings
2121
Indexer = struct {
22-
IssueType string
23-
IssuePath string
24-
RepoIndexerEnabled bool
25-
RepoPath string
26-
UpdateQueueLength int
27-
MaxIndexerFileSize int64
28-
IssueQueueType string
29-
IssueQueueDir string
30-
IssueQueueConnStr string
31-
IssueQueueBatchNumber int
22+
IssueType string
23+
IssuePath string
24+
RepoIndexerEnabled bool
25+
RepoPath string
26+
UpdateQueueLength int
27+
MaxIndexerFileSize int64
28+
IssueQueueType string
29+
IssueQueueDir string
30+
IssueQueueConnStr string
31+
IssueQueueBatchNumber int
32+
RepoUseCamelCaseTokenizer bool
3233
}{
3334
IssueType: "bleve",
3435
IssuePath: "indexers/issues.bleve",
@@ -53,6 +54,7 @@ func newIndexerService() {
5354
}
5455
Indexer.UpdateQueueLength = sec.Key("UPDATE_BUFFER_LEN").MustInt(20)
5556
Indexer.MaxIndexerFileSize = sec.Key("MAX_FILE_SIZE").MustInt64(1024 * 1024)
57+
Indexer.RepoUseCamelCaseTokenizer = sec.Key("REPO_INDEXER_CAMEL_CASE").MustBool(true)
5658
Indexer.IssueQueueType = sec.Key("ISSUE_INDEXER_QUEUE_TYPE").MustString(LevelQueueType)
5759
Indexer.IssueQueueDir = sec.Key("ISSUE_INDEXER_QUEUE_DIR").MustString(path.Join(AppDataPath, "indexers/issues.queue"))
5860
Indexer.IssueQueueConnStr = sec.Key("ISSUE_INDEXER_QUEUE_CONN_STR").MustString(path.Join(AppDataPath, ""))

0 commit comments

Comments
 (0)