From 71830d7c77e28029fb06097491f515ad161d795a Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Sat, 4 Aug 2018 22:46:55 -0700 Subject: [PATCH] Further improved search result snippets --- app/components/DocumentPreview/DocumentPreview.js | 3 ++- package.json | 1 + server/models/Document.js | 7 +++++-- yarn.lock | 4 ++++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/components/DocumentPreview/DocumentPreview.js b/app/components/DocumentPreview/DocumentPreview.js index 864bd7ff..302983dc 100644 --- a/app/components/DocumentPreview/DocumentPreview.js +++ b/app/components/DocumentPreview/DocumentPreview.js @@ -98,9 +98,10 @@ const Title = styled(Highlight)` `; const ResultContext = styled(Highlight)` + display: block; color: ${props => props.theme.slateDark}; font-size: 14px; - margin-top: 0; + margin-top: -0.25em; margin-bottom: 0.25em; `; diff --git a/package.json b/package.json index 6c420d33..83f1c8ef 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "url": "git+ssh://git@github.com/outline/outline.git" }, "dependencies": { + "@tommoor/remove-markdown": "0.3.1", "@tommoor/slate-drop-or-paste-images": "^0.8.1", "autotrack": "^2.4.1", "aws-sdk": "^2.135.0", diff --git a/server/models/Document.js b/server/models/Document.js index 05fb6675..ff605c2d 100644 --- a/server/models/Document.js +++ b/server/models/Document.js @@ -5,6 +5,7 @@ import randomstring from 'randomstring'; import MarkdownSerializer from 'slate-md-serializer'; import Plain from 'slate-plain-serializer'; import Sequelize from 'sequelize'; +import removeMarkdown from '@tommoor/remove-markdown'; import isUUID from 'validator/lib/isUUID'; import { Collection, User } from '../models'; @@ -207,7 +208,7 @@ Document.searchForUser = async ( SELECT id, ts_rank(documents."searchVector", plainto_tsquery('english', :query)) as "searchRanking", - ts_headline('english', "text", plainto_tsquery('english', :query), 'MaxFragments=0, MinWords=10, MaxWords=30') as "searchContext" + ts_headline('english', "text", plainto_tsquery('english', :query), 'MaxFragments=1, MinWords=20, MaxWords=35') as "searchContext" FROM documents WHERE "searchVector" @@ plainto_tsquery('english', :query) AND "teamId" = '${user.teamId}'::uuid AND @@ -243,7 +244,9 @@ Document.searchForUser = async ( return map(results, result => ({ ranking: result.searchRanking, - context: unescape(result.searchContext), + context: removeMarkdown(unescape(result.searchContext), { + stripHTML: false, + }), document: find(documents, { id: result.id }), })); }; diff --git a/yarn.lock b/yarn.lock index fc105429..5c1f403e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -63,6 +63,10 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" +"@tommoor/remove-markdown@0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@tommoor/remove-markdown/-/remove-markdown-0.3.1.tgz#25e7b845d52fcfadf149a3a6a468a931fee7619b" + "@tommoor/slate-drop-or-paste-images@^0.8.1": version "0.8.1" resolved "https://registry.npmjs.org/@tommoor/slate-drop-or-paste-images/-/slate-drop-or-paste-images-0.8.1.tgz#4d94b5c1dd2de109546ee1f38a1e4a18df078c1e"