class SearchIndex extends Index
{
+ protected $varname = 'minisearchodl';
+
public function __construct()
{
- $this->output = storage_path('search.js');
+ $this->output = public_path('js/search.index.js');
}
public function handle()
// }
/** @var Asset[] $pdfs */
- $pdfs=Asset::getPDFInResources();
+ $pdfs = Asset::getPDFInResources();
foreach ($pdfs as $pdf) {
$document = new PDF($pdf->getFirstMediaInField('file_upload')->getPath());
$document->setId($pdf->id);
- $document->setUrl('asset_'.$document->getId());
+ $document->setUrl('asset_' . $document->getId());
$document->setTitle($pdf->title);
$document->setKeywords($pdf->keywords);
$document->setThumb($pdf->getThumbURL());
miniSearch: {}, // Holds the MiniSearch instance
setup: { // MiniSearch options: https://lucaong.github.io/minisearch/#search-options
- fields: ['title', 'text'], // fields to index for full-text search
+ fields: ['title', 'text','keywords'], // fields to index for full-text search
storeFields: ['id', 'title', 'text', 'type', 'url', 'thumb'], // fields to return with search results
searchOptions: {
prefix: true, // Allow partial matches
},
query: '', // The search query
- init() {
+ async init() {
+
this.miniSearch = new MiniSearch(this.setup);
- this.miniSearch.addAllAsync(searchData); // Load asynchronously for better performance
+ await loadScript('search.index.js');
+ this.miniSearch.addAllAsync(minisearchodl);
},
get results() {
},
});
+
+const loadScript = src => {
+ return new Promise((resolve, reject) => {
+ const script = document.createElement('script')
+ script.type = 'text/javascript'
+ script.onload = resolve
+ script.onerror = reject
+ script.src = src
+ document.head.append(script)
+ })
+}