mirror of
https://github.com/simon987/sist2.git
synced 2025-09-10 00:16:53 +00:00
116 lines
2.8 KiB
JavaScript
116 lines
2.8 KiB
JavaScript
import store from "@/store";
|
|
|
|
const SORT_MODES = {
|
|
score: {
|
|
"sort": "score",
|
|
},
|
|
random: {
|
|
"sort": "random"
|
|
},
|
|
dateAsc: {
|
|
"sort": "mtime"
|
|
},
|
|
dateDesc: {
|
|
"sort": "mtime",
|
|
"sortAsc": false
|
|
},
|
|
sizeAsc: {
|
|
"sort": "size",
|
|
},
|
|
sizeDesc: {
|
|
"sort": "size",
|
|
"sortAsc": false
|
|
},
|
|
nameAsc: {
|
|
"sort": "name",
|
|
},
|
|
nameDesc: {
|
|
"sort": "name",
|
|
"sortAsc": false
|
|
}
|
|
};
|
|
|
|
|
|
class Sist2ElasticsearchQuery {
|
|
|
|
searchQuery() {
|
|
|
|
const getters = store.getters;
|
|
|
|
const searchText = getters.searchText;
|
|
const pathText = getters.pathText;
|
|
const sizeMin = getters.sizeMin;
|
|
const sizeMax = getters.sizeMax;
|
|
const dateMin = getters.dateMin;
|
|
const dateMax = getters.dateMax;
|
|
const size = getters.size;
|
|
const after = getters.lastDoc;
|
|
const selectedIndexIds = getters.selectedIndices.map((idx) => idx.id)
|
|
const selectedMimeTypes = getters.selectedMimeTypes;
|
|
const selectedTags = getters.selectedTags;
|
|
|
|
const q = {
|
|
"pageSize": size
|
|
}
|
|
|
|
Object.assign(q, SORT_MODES[getters.sortMode]);
|
|
|
|
if (!after) {
|
|
q["fetchAggregations"] = true;
|
|
}
|
|
if (searchText) {
|
|
q["query"] = searchText;
|
|
}
|
|
if (pathText) {
|
|
q["path"] = pathText.endsWith("/") ? pathText.slice(0, -1) : pathText;
|
|
}
|
|
if (sizeMin) {
|
|
q["sizeMin"] = sizeMin;
|
|
}
|
|
if (sizeMax) {
|
|
q["sizeMax"] = sizeMax;
|
|
}
|
|
if (dateMin) {
|
|
q["dateMin"] = dateMin;
|
|
}
|
|
if (dateMax) {
|
|
q["dateMax"] = dateMax;
|
|
}
|
|
if (after) {
|
|
q["after"] = after.sort;
|
|
}
|
|
if (selectedIndexIds.length > 0) {
|
|
q["indexIds"] = selectedIndexIds;
|
|
}
|
|
if (selectedMimeTypes.length > 0) {
|
|
q["mimeTypes"] = selectedMimeTypes;
|
|
}
|
|
if (selectedTags.length > 0) {
|
|
q["tags"] = selectedTags
|
|
}
|
|
if (getters.sortMode === "random") {
|
|
q["seed"] = getters.seed;
|
|
}
|
|
if (getters.optHighlight) {
|
|
q["highlight"] = true;
|
|
q["highlightContextSize"] = Number(getters.optFragmentSize);
|
|
}
|
|
|
|
if (getters.embedding) {
|
|
q["model"] = getters.embeddingsModel;
|
|
q["embedding"] = getters.embedding;
|
|
q["sort"] = "embedding";
|
|
q["sortAsc"] = false;
|
|
} else if (getters.sortMode === "embedding") {
|
|
q["sort"] = "sort"
|
|
q["sortAsc"] = true;
|
|
}
|
|
|
|
q["searchInPath"] = getters.optSearchInPath;
|
|
|
|
return q;
|
|
}
|
|
}
|
|
|
|
|
|
export default new Sist2ElasticsearchQuery(); |