Skip to content

Commit f30d354

Browse files
authored
Merge pull request #128 from stumbo/aiEnhancedSearch
Ai enhanced search
2 parents ba243f9 + 4aed27c commit f30d354

File tree

3 files changed

+167
-0
lines changed

3 files changed

+167
-0
lines changed

content/en/search.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
+++
22
title = "Search Results"
33
layout = "search"
4+
js = "https://cdn.jsdelivr.net/npm/@google/generative-ai@latest/dist/index.min.js"
45
+++

layouts/_default/search.html

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
{{ define "main" -}}
2+
<script src="{{ "js/marked.min.js" | relURL }}"></script>
3+
<section class="row td-search-result">
4+
<div class="col-12 col-md-8 offset-md-2">
5+
<h2 class="ms-4">{{ .Title }}</h2>
6+
7+
</div>
8+
<div class="col-12 col-md-8 offset-md-2">
9+
<script>
10+
(function() {
11+
const queryText = new URLSearchParams(window.location.search).get('q')
12+
const url = "https://discoveryengine.googleapis.com/v1alpha/projects/191169864763/locations/global/collections/default_collection/engines/interlisp-search_1741738278473/servingConfigs/default_search:searchLite?key=AIzaSyA_bFZHph5ZXN8EtXTRaQa2zi6Sh70e_zU";
13+
const data = {
14+
query: `${queryText}`,
15+
pageSize: 20,
16+
session: "projects/191169864763/locations/global/collections/default_collection/engines/interlisp-search_1741738278473/sessions/-",
17+
spellCorrectionSpec: {
18+
mode: "AUTO"
19+
},
20+
languageCode: "en-US",
21+
contentSearchSpec: {
22+
snippetSpec: {
23+
returnSnippet: true
24+
}
25+
}
26+
};
27+
fetch(url, {
28+
method: "POST",
29+
headers: {
30+
"Content-Type": "application/json"
31+
},
32+
body: JSON.stringify(data)
33+
})
34+
.then(response => response.json())
35+
.then(data => {
36+
console.log("debug info fetch 66", data);
37+
const resultDiv2 = document.createElement('div');
38+
resultDiv2.innerHTML = marked.parse(data.answer.answerText); // Use a Markdown parser like "marked" to render Markdown as HTML
39+
document.querySelector('.col-12.col-md-8.offset-md-2').appendChild(resultDiv2);
40+
})
41+
/*
42+
This method requires Oauth2 authentication and a valid bearer token.
43+
const url = "https://discoveryengine.googleapis.com/v1alpha/projects/191169864763/locations/global/collections/default_collection/engines/interlisp-search_1741738278473/servingConfigs/default_search:search";
44+
const bearer = "ya29.a0AZYkNZjwU1i01Y9FG5PK1G-3W9OlUGIpbqN87t35wfNBwNRILQIsXdxT34ABzJDpaWsnhsUiImHR5smDsxxgdYcX0x6e07KjoqDic0XVhzE6_dflLQ0p84-_BKYA2latAOTGhDvVHYKGY_sa5taCIEndv6yGIcHwOKX977TiZQyzfL4aCgYKAZcSARESFQHGX2MitMARmJuZ1CbwkvQbfN151w0182";
45+
const data = {
46+
query: `${queryText}`,
47+
pageSize: 10,
48+
session: "projects/191169864763/locations/global/collections/default_collection/engines/interlisp-search_1741738278473/sessions/-",
49+
spellCorrectionSpec: {
50+
mode: "AUTO"
51+
},
52+
languageCode: "en-US",
53+
contentSearchSpec: {
54+
snippetSpec: {
55+
returnSnippet: true
56+
}
57+
}
58+
};
59+
60+
fetch(url, {
61+
method: "POST",
62+
headers: {
63+
"Content-Type": "application/json",
64+
"Authorization": `Bearer ${bearer}`
65+
},
66+
body: JSON.stringify(data)
67+
})
68+
.then(response => response.json())
69+
.then(data => {
70+
console.log("debug info fetch 28", data);
71+
const resultDiv = document.createElement('div');
72+
// resultDiv.textContent = JSON.stringify(data, null, 2);
73+
// document.querySelector('.col-12.col-md-8.offset-md-2').appendChild(resultDiv);
74+
const resultsCall1 = data; // Define resultsCall1 here
75+
const url2 = "https://discoveryengine.googleapis.com/v1alpha/projects/191169864763/locations/global/collections/default_collection/engines/interlisp-search_1741738278473/servingConfigs/default_search:answer";
76+
const data2 = {
77+
query : {
78+
text: `${queryText}`,
79+
queryId: `${resultsCall1.sessionInfo.queryId}` // Fix typo here
80+
},
81+
session: `${resultsCall1.sessionInfo.name}`,
82+
relatedQuestionsSpec: {
83+
enable: true
84+
},
85+
answerGenerationSpec: {
86+
ignoreAdversarialQuery: false,
87+
ignoreNonAnswerSeekingQuery: false,
88+
ignoreLowRelevantContent: true,
89+
multimodalSpec: {},
90+
includeCitations: true,
91+
promptSpec: {
92+
preamble: "You are a researcher with experience in computer science and the evolution of programming languages. Answers should be targeted for like-minded individuals. Technical details are good, especially when they are appropriately attributed."
93+
},
94+
modelSpec: {
95+
modelVersion: "stable"
96+
}
97+
}
98+
};
99+
console.log("debug POST 2 body: ", data2);
100+
fetch(url2, {
101+
method: "POST",
102+
headers: {
103+
"Content-Type": "application/json",
104+
"Authorization": `Bearer ${bearer}`
105+
},
106+
body: JSON.stringify(data2)
107+
})
108+
.then(response => response.json())
109+
.then(data => {
110+
console.log("debug info fetch 66", data);
111+
const resultDiv2 = document.createElement('div');
112+
resultDiv2.innerHTML = marked.parse(data.answer.answerText); // Use a Markdown parser like "marked" to render Markdown as HTML
113+
document.querySelector('.col-12.col-md-8.offset-md-2').appendChild(resultDiv2);
114+
})
115+
}) */
116+
.catch(error => {
117+
console.error("Failed to fetch remote resource:", error);
118+
});
119+
})();
120+
</script>
121+
<!--
122+
if (!window["WIZ_gab_global_data"]) {
123+
window["WIZ_gab_global_data"] = {
124+
'zkAi6d': 'https://cloud.google.com/ai/gen-app-builder/_/UcsWidgetUi',
125+
'axVgKc': 'https:/www.gstatic.com/_/mss/boq-cloud-ai-ucs/_/js/k\x3dboq-cloud-ai-ucs.UcsWidgetUi.en_US.DX1lMoJFvVY.2021.O\/am\x3dgAE\/d\x3d1\/rs\x3dAAj4NmxHBlw81Ca5Zbk284DAgJJnyhv-3g\/m\x3dbootstrap_module,ucs_widget_module',
126+
'CD1P0b': "Cv8HEg8I\/PLhFRgAOgZSVXl2UGQSDgi\/kuMVGAA6BWY2STNrEg8IqNviFRgBOgZGZ0VqZmYSDwjT6uIVGAE6BmhlUHJqYhIPCND74hUYAToGVU40STBlEg4Ikb3jFRgBOgVTRGJCVhIOCKDF4xUYADoFb2RGSVESDgia6+MVGAE6BWJSSVZEEg8ImfLjFRgAOgZqSW1UcWMSDwjl8eEVGAA6BmJ3a0NnYxIPCKX24xUYAToGVHZZclpjEg8I88ziFRgBOgZnQlNldmUSDgiDr+MVGAE6BWtkWG10Eg4Iz7XjFRgBOgVQNE9TQhIPCKb24xUYAToGa1U3a3dmEg8IzpfjFRgAOgZmS2xCY2MSDwj4+OMVGAA6Bm5CRnM5YxIPCJ+o4xUYAToGcEg1c0FlEg8IyfvjFRgAOgZRQ2FpYWQSDwitheQVGAA6BlNLeUpPZRIPCJSp4xUYAToGb1VKYjhiEg8IqP3jFRgAOgZuczEyeGISDgiO5+IVGAE6BVcwbEFqEg8IyZviFRgBOgZIMnNrNGISDgjW6eIVGAA6BUREMTlqEg8IvpLjFRgBOgZzRzJNVWQSDwj97eMVGAE6Blk3dmVGZRIPCPSy4xUYADoGeDQ3Q0xlEg4I\/ZvjFRgBOgVjT2Y4cRIPCJeN4xUYADoGbEh6TGplEg8IgonjFRgBOgZQdjZkRWQSDgj7weMVGAE6BUZnQlc2Eg8IpfziFRgBOgZ1ZXNjS2ISDgjnuOMVGAE6BWxmbE1vEg8IlN7jFRgAOgZwTmRjTmQSDwiqpeMVGAE6BmNMdFBOYhIPCJKc4xUYAToGR25oVXZjEg8IwYfkFRgAOgZIUDRnYmQSDwjHoeIVGAE6BlpMajBnZhIOCJe+4hUYAToFeWRKNWYSDwiTnOIVGAA6BmZtVURWZRIPCIrc4xUYAToGWGxTQkViEg8I5\/PiFRgAOgZNUzFmemMSDwim8+AVGAE6BnI2RW44YxIPCMr34xUYADoGU1VXbVNiEg8Ist3jFRgAOgZ0bnZhemMSDwjI7+IVGAE6BmEwOWtkZRIPCISL5BUYADoGSVY2dmliEg8IuNHiFRgBOgZOTmUxZGQSDwiWsOIVGAE6BmZpWHJYZBIOCIvf4xUYAToFdTRVdjASDwj7kuIVGAE6Bm9SMmVxZhIPCJjU4hUYAToGemFLWmZkEg8I2vbjFRgAOgZUdDNzQWUSDwi\/wuMVGAA6BnhiUFZJYxIPCMGt4xUYADoGa2E5QkhjEg8IreDiFRgBOgZldzZlNWISDwjRq+IVGAE6BmVxSTd5ZBIPCPTM4hUYADoGelh2ZmdiEg8IyaLiFRgBOgZHT0RDeWYaDggDEgodD7XduSkWnK0Q",
127+
};
128+
const s = document.createElement("script");
129+
s.src = "https:\/\/www.gstatic.com\/_\/mss\/boq-cloud-ai-ucs\/_\/js\/k\x3dboq-cloud-ai-ucs.UcsWidgetUi.en_US.DX1lMoJFvVY.2021.O\/am\x3dgAE\/d\x3d1\/rs\x3dAAj4NmxHBlw81Ca5Zbk284DAgJJnyhv-3g\/m\x3dbootstrap_module,ucs_widget_module";
130+
s.async = true;
131+
s.crossorigin = "anonymous";
132+
document.head.appendChild(s);}
133+
134+
-->
135+
<!--
136+
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
137+
-H "Content-Type: application/json" \
138+
"https://discoveryengine.googleapis.com/v1alpha/projects/85874458559/locations/global/collections/default_collection/engines/interlisp-search_1738386288647/servingConfigs/default_search:search" \
139+
-d '{"query":"<QUERY>","pageSize":10,"spellCorrectionSpec":{"mode":"AUTO"},"contentSearchSpec":{"snippetSpec":{"returnSnippet":true}}}'
140+
-->
141+
142+
{{ with .Site.Params.gcs_engine_id -}}
143+
<script>
144+
(function() {
145+
var cx = '{{ . }}';
146+
var gcse = document.createElement('script');
147+
gcse.type = 'text/javascript';
148+
gcse.async = true;
149+
gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
150+
var s = document.getElementsByTagName('script')[0];
151+
s.parentNode.insertBefore(gcse, s);
152+
})();
153+
</script>
154+
{{ end -}}
155+
156+
<gcse:searchresults-only></gcse:searchresults-only>
157+
<!-- End Google Custom Search Engine-->
158+
</div>
159+
</section>
160+
{{ end }}

0 commit comments

Comments
 (0)