Compare commits

...

9 Commits

8 changed files with 49 additions and 16 deletions

View File

@ -18,9 +18,32 @@ fulltext search with one that is completely relying on the proven elasticsearch
## Installation
```bash
composer require blomstra/search:*
composer require sbp/flarum-search
```
## Notes
This fork is now maintained as `sbp/flarum-search`.
Intentional compatibility leftovers:
- settings keys remain `blomstra-search.*`
- some translation keys remain `blomstra-search.*`
- CLI command names may still remain `blomstra:*` until a later migration
Search behavior:
- title autocomplete enabled
- fuzzy title search enabled
- exact + fuzzy content search on full search page
- no content autocomplete in dropdown (performance decision)
``
Repository can be found here: https://gitea.muehlberger.net/sbp-jm/sbp-flarum-search
Enable the extension in the admin area and configure the Elasticsearch endpoint and index name in the extension settings.
## Setting up the index

View File

@ -1,9 +1,24 @@
<?php
/*
* This file is part of blomstra/search.
*
* Copyright (c) 2022 Blomstra Ltd.
*
* For the full copyright and license information, please view the LICENSE.md
* file that was distributed with this source code.
*
*/
namespace Sbp\Search;
use Flarum\Extend as Flarum;
return [
(new Flarum\ServiceProvider())->register(Provider::class),
(new Flarum\Frontend('forum'))
->js(__DIR__.'/js/dist/forum.js'),
(new Flarum\Frontend('admin'))
->js(__DIR__.'/js/dist/admin.js')
->css(__DIR__.'/resources/less/admin.less'),
@ -13,7 +28,6 @@ return [
(new Flarum\Routes('api'))
->get('/sbp/search/{type}', 'sbp.search', Api\Controllers\SearchController::class)
->put('/sbp/search/index', 'sbp.search.index', Api\Controllers\IndexController::class),
(new Flarum\Console())
->command(Commands\BuildCommand::class),
@ -23,10 +37,5 @@ return [
->default('blomstra-search.min-search-length', Commands\BuildCommand::DEFAULT_MIN_SEARCH_LENGTH)
->default('blomstra-search.stem-exclusion', '')
->serializeToForum('blomstraSearchMinLength', 'blomstra-search.min-search-length', 'intval')
->serializeToForum(
'blomstraSearchPostBodies',
'blomstra-search.search-post-bodies',
fn ($v) => (bool) $v,
true
),
];
->serializeToForum('blomstraSearchPostBodies', 'blomstra-search.search-post-bodies', fn ($v) => (bool) $v, true),
];

2
js/dist/forum.js vendored

File diff suppressed because one or more lines are too long

1
js/dist/forum.js.LICENSE.txt vendored Normal file
View File

@ -0,0 +1 @@
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */

File diff suppressed because one or more lines are too long

View File

@ -22,7 +22,7 @@ export default function extendDiscussionState() {
}
// Construct API search URI
const url = `${app.forum.attribute('apiUrl')}/blomstra/search/${this.type}`;
const url = `${app.forum.attribute('apiUrl')}/sbp/search/${this.type}`;
// Make API GET request
const results = await app.request({ params, url, method: 'GET' });

View File

@ -35,7 +35,7 @@ export default class DiscussionsSearchSource implements SearchSource {
};
// Construct API search URI
const url = `${app.forum.attribute('apiUrl')}/blomstra/search/${this.type}`;
const url = `${app.forum.attribute('apiUrl')}/sbp/search/${this.type}`;
// Make API GET request
const results = await app.request({ params, url, method: 'GET' });

View File

@ -176,7 +176,7 @@ class SearchController extends ListDiscussionsController
});
$document->addPaginationLinks(
$this->uri->to('api')->route('blomstra.search', ['type' => 'discussions']),
$this->uri->to('api')->route('sbp.search', ['type' => 'discussions']),
$request->getQueryParams(),
$offset,
$limit,
@ -265,7 +265,7 @@ class SearchController extends ListDiscussionsController
]);
$document->addPaginationLinks(
$this->uri->to('api')->route('blomstra.search', ['type' => 'discussions']),
$this->uri->to('api')->route('sbp.search', ['type' => 'discussions']),
$request->getQueryParams(),
$offset,
$limit,