From 272be8ac8836cbd1d595594497810ab8576719d9 Mon Sep 17 00:00:00 2001 From: zzossig Date: Tue, 20 Apr 2021 04:46:56 +0900 Subject: 2 more search options: searchContent, searchDistance --- README.ko.md | 8 ++++++-- exampleSite/config/_default/params.toml | 11 +++++++---- layouts/index.json | 6 +++++- layouts/partials/head/scripts.html | 9 +++++++-- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/README.ko.md b/README.ko.md index 9bb1ed2..6976b79 100644 --- a/README.ko.md +++ b/README.ko.md @@ -268,10 +268,14 @@ showMobileMenuTerms = ["tags", "categories", "series"] # navbar enableThemeChange = true # site color theme -# body -enableBreadcrumb = true # breadcrumb for list, single page +# search enableSearch = true # site search with fuse enableSearchHighlight = true # when true, search keyword will be highlighted +searchContent = true # include content to search index +searchDistance = 100 # fuse option: distance + +# body +enableBreadcrumb = true # breadcrumb for list, single page enableGoToTop = true # scroll to top enableWhoami = true # at the end of single page summaryShape = "classic" # card, classic, compact diff --git a/exampleSite/config/_default/params.toml b/exampleSite/config/_default/params.toml index 08dd35e..99d6687 100644 --- a/exampleSite/config/_default/params.toml +++ b/exampleSite/config/_default/params.toml @@ -30,15 +30,18 @@ hideHomeHeaderWhenMobile = false # menu showMobileMenuTerms = ["tags", "categories", "series"] -# body -enableBreadcrumb = true -enablePhotoSwipe = true +# search enableSearch = true enableSearchHighlight = true +searchResultPosition = "main" # side, main +searchContent = true # include content to search index +searchDistance = 100 # fuse option + +# body +enableBreadcrumb = true enableGoToTop = true enableWhoami = true summaryShape = "classic" # card, classic, compact -searchResultPosition = "main" # side, main archiveGroupByDate = "2006" # "2006-01": group by month, "2006": group by year archivePaginate = 13 paginateWindow = 1 diff --git a/layouts/index.json b/layouts/index.json index 98a3da9..d2ba08a 100644 --- a/layouts/index.json +++ b/layouts/index.json @@ -2,7 +2,11 @@ {{- $.Scratch.Add "searchindex" slice -}} {{- range $index, $element := (where .Site.RegularPages "Kind" "page") -}} {{ with $element.Plain }} - {{- $.Scratch.Add "searchindex" (dict "id" $index "title" $element.Title "uri" $element.Permalink "tags" $element.Params.tags "section" $element.Section "content" $element.Plain "description" $element.Description) -}} + {{- if $.Param "searchContent" -}} + {{- $.Scratch.Add "searchindex" (dict "id" $index "title" $element.Title "uri" $element.Permalink "tags" $element.Params.tags "section" $element.Section "content" $element.Plain "description" $element.Description) -}} + {{ else }} + {{- $.Scratch.Add "searchindex" (dict "id" $index "title" $element.Title "uri" $element.Permalink "tags" $element.Params.tags "section" $element.Section "description" $element.Description) -}} + {{- end -}} {{ end }} {{- end -}} {{- $.Scratch.Get "searchindex" | jsonify -}} \ No newline at end of file diff --git a/layouts/partials/head/scripts.html b/layouts/partials/head/scripts.html index ec2514f..cf2d608 100644 --- a/layouts/partials/head/scripts.html +++ b/layouts/partials/head/scripts.html @@ -662,6 +662,10 @@ {{ $enableSearch := ($.Param "enableSearch") }} var enableSearch = JSON.parse({{ $enableSearch | jsonify }}); + {{ $searchDistance := ($.Param "searchDistance") }} + var searchDistance = JSON.parse({{ $searchDistance | jsonify }}); + {{ $searchContent := ($.Param "searchContent") }} + var searchContent = JSON.parse({{ $searchContent | jsonify }}); {{ $enableSearchHighlight := ($.Param "enableSearchHighlight") }} var enableSearchHighlight = JSON.parse({{ $enableSearchHighlight | jsonify }}); {{ $searchResultPosition := ($.Param "searchResultPosition") }} @@ -686,12 +690,13 @@ xhr.onload = function () { if (xhr.status === 200) { fuse = new Fuse(JSON.parse(xhr.response.toString('utf-8')), { - keys: sectionType.includes('publication') ? ['title', 'abstract'] : ['title', 'description', 'content'], + keys: sectionType.includes('publication') ? ['title', 'abstract'] : + searchContent ? ['title', 'description', 'content'] : ['title', 'description'], includeMatches: enableSearchHighlight, shouldSort: true, // default: true threshold: 0.4, // default: 0.6 (0.0 requires a perfect match) location: 0, // default: 0 - distance: 100, // default: 100 + distance: searchDistance ? searchDistance : 100, // default: 100 maxPatternLength: 32, minMatchCharLength: 1, isCaseSensitive: false, // defualt: false -- cgit v1.2.3