Option to search in path #49

This commit is contained in:
simon987 2020-05-09 21:59:07 -04:00
parent 27509f97e1
commit 16514fd6b0
7 changed files with 57 additions and 11 deletions

View File

@ -11,7 +11,16 @@
"type": "text", "type": "text",
"analyzer": "path_analyzer", "analyzer": "path_analyzer",
"fielddata": true, "fielddata": true,
"index_prefixes": {} "fields": {
"nGram": {
"type": "text",
"analyzer": "my_nGram"
},
"text": {
"type": "text",
"analyzer": "content_analyzer"
}
}
}, },
"mime": { "mime": {
"type": "keyword" "type": "keyword"

File diff suppressed because one or more lines are too long

View File

@ -19,7 +19,7 @@
#define EPILOG "Made by simon987 <me@simon987.net>. Released under GPL-3.0" #define EPILOG "Made by simon987 <me@simon987.net>. Released under GPL-3.0"
static const char *const Version = "2.1.2"; static const char *const Version = "2.2.0";
static const char *const usage[] = { static const char *const usage[] = {
"sist2 scan [OPTION]... PATH", "sist2 scan [OPTION]... PATH",
"sist2 index [OPTION]... INDEX", "sist2 index [OPTION]... INDEX",

View File

@ -45,6 +45,18 @@ function getContentHighlight(hit) {
return undefined; return undefined;
} }
function getPathHighlight(hit) {
if (hit.hasOwnProperty("highlight")) {
if (hit["highlight"].hasOwnProperty("path.text")) {
return hit["highlight"]["path.text"][0];
} else if (hit["highlight"].hasOwnProperty("path.nGram")) {
return hit["highlight"]["path.nGram"][0];
}
}
return undefined;
}
function applyNameToTitle(hit, title, extension) { function applyNameToTitle(hit, title, extension) {
if (hit.hasOwnProperty("highlight")) { if (hit.hasOwnProperty("highlight")) {
if (hit["highlight"].hasOwnProperty("name")) { if (hit["highlight"].hasOwnProperty("name")) {
@ -443,7 +455,7 @@ function createDocLine(hit) {
if (contentHl !== undefined) { if (contentHl !== undefined) {
const contentDiv = document.createElement("div"); const contentDiv = document.createElement("div");
contentDiv.setAttribute("class", "content-div"); contentDiv.setAttribute("class", "content-div");
contentDiv.insertAdjacentHTML('afterbegin', contentHl); contentDiv.insertAdjacentHTML("afterbegin", contentHl);
titleDiv.appendChild(contentDiv); titleDiv.appendChild(contentDiv);
} }
@ -453,7 +465,13 @@ function createDocLine(hit) {
let path = document.createElement("div"); let path = document.createElement("div");
path.setAttribute("class", "path-line"); path.setAttribute("class", "path-line");
path.setAttribute("title", hit["_source"]["path"] + "/"); path.setAttribute("title", hit["_source"]["path"] + "/");
path.appendChild(document.createTextNode(hit["_source"]["path"] + "/"));
const pathHighlight = getPathHighlight(hit);
if (pathHighlight) {
path.insertAdjacentHTML("afterbegin", pathHighlight + "/");
} else {
path.appendChild(document.createTextNode(hit["_source"]["path"] + "/"));
}
let tagContainer = document.createElement("div"); let tagContainer = document.createElement("div");
tagContainer.setAttribute("class", "tag-container"); tagContainer.setAttribute("class", "tag-container");

View File

@ -26,7 +26,8 @@ const _defaults = {
display: "grid", display: "grid",
fuzzy: true, fuzzy: true,
highlight: true, highlight: true,
sort: "score" sort: "score",
searchInPath: false,
}; };
SORT_MODES = { SORT_MODES = {
@ -66,7 +67,7 @@ SORT_MODES = {
], ],
key: hit => hit["_source"]["size"] key: hit => hit["_source"]["size"]
}, },
} };
function Settings() { function Settings() {
this.options = {}; this.options = {};
@ -377,8 +378,15 @@ function search(after = null) {
"font_name^6" "font_name^6"
]; ];
if (CONF.options.searchInPath) {
fields.push("path.text^5");
}
if ($("#fuzzyToggle").prop("checked")) { if ($("#fuzzyToggle").prop("checked")) {
fields.push("content.nGram"); fields.push("content.nGram");
if (CONF.options.searchInPath) {
fields.push("path.nGram");
}
fields.push("name.nGram^3"); fields.push("name.nGram^3");
} }
@ -445,6 +453,10 @@ function search(after = null) {
font_name: {}, font_name: {},
} }
}; };
if (CONF.options.searchInPath) {
q.highlight.fields["path.text"] = {};
q.highlight.fields["path.nGram"] = {};
}
} }
$.jsonPost("es", q).then(searchResult => { $.jsonPost("es", q).then(searchResult => {
@ -661,7 +673,7 @@ function createPathTree(target) {
depth: 0, depth: 0,
children: true children: true
}) })
}) });
new InspireTreeDOM(pathTree, { new InspireTreeDOM(pathTree, {
target: target target: target
@ -674,6 +686,7 @@ function updateSettings() {
CONF.options.display = $("#settingDisplay").val(); CONF.options.display = $("#settingDisplay").val();
CONF.options.fuzzy = $("#settingFuzzy").prop("checked"); CONF.options.fuzzy = $("#settingFuzzy").prop("checked");
CONF.options.highlight = $("#settingHighlight").prop("checked"); CONF.options.highlight = $("#settingHighlight").prop("checked");
CONF.options.searchInPath = $("#settingSearchInPath").prop("checked");
CONF.save(); CONF.save();
searchDebounced(); searchDebounced();
@ -696,4 +709,5 @@ function loadSettings() {
$("#settingDisplay").val(CONF.options.display); $("#settingDisplay").val(CONF.options.display);
$("#settingFuzzy").prop("checked", CONF.options.fuzzy); $("#settingFuzzy").prop("checked", CONF.options.fuzzy);
$("#settingHighlight").prop("checked", CONF.options.highlight); $("#settingHighlight").prop("checked", CONF.options.highlight);
$("#settingSearchInPath").prop("checked", CONF.options.searchInPath);
} }

View File

@ -11,7 +11,7 @@
<nav class="navbar navbar-expand-lg"> <nav class="navbar navbar-expand-lg">
<a class="navbar-brand" href="/">sist2</a> <a class="navbar-brand" href="/">sist2</a>
<span class="badge badge-pill version">2.1.2</span> <span class="badge badge-pill version">2.2.0</span>
<span class="tagline">Lightning-fast file system indexer and search tool </span> <span class="tagline">Lightning-fast file system indexer and search tool </span>
<button style="margin-left: auto" class="btn" type="button" data-toggle="modal" data-target="#settings" onclick="loadSettings()">Settings</button> <button style="margin-left: auto" class="btn" type="button" data-toggle="modal" data-target="#settings" onclick="loadSettings()">Settings</button>
<a id="theme" class="btn" title="Toggle theme" href="/">Theme</a> <a id="theme" class="btn" title="Toggle theme" href="/">Theme</a>
@ -186,6 +186,11 @@
<label class="custom-control-label" for="settingFuzzy">Set fuzzy search by default</label> <label class="custom-control-label" for="settingFuzzy">Set fuzzy search by default</label>
</div> </div>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="settingSearchInPath">
<label class="custom-control-label" for="settingSearchInPath">Enable matching query against document path</label>
</div>
<label for="settingDisplay">Display</label> <label for="settingDisplay">Display</label>
<select id="settingDisplay" class="form-control form-control-sm"> <select id="settingDisplay" class="form-control form-control-sm">
<option value="grid">Grid</option> <option value="grid">Grid</option>

File diff suppressed because one or more lines are too long