/**
* @return Cubist\Backpack\app\Magic\Menu\Item[]
*/
- public static function getAllNavigablePages()
+ public static function getAllNavigablePages($locale = null)
{
- $pages = self::getNavigation()->findAll();
+ $pages = self::getNavigation($locale)->findAll();
$res = [];
continue;
}
- $url = action('PageController@catchall', ['page' => $href]);
+ $url = $page->getURL();
if (isset($res[$url])) {
continue;
}
],
'en' => [
'type' => 'text',
- 'analyser' => 'english',
+ 'analyzer' => 'english_light',
+ 'fields' => [
+ 'stemmed' => [
+ 'type' => 'text',
+ 'analyzer' => 'english_heavy'
+ ]
+ ]
],
'de' => [
'type' => 'text',
]
]
]
+ ],
+ 'en' => [
+ "filter" => [
+ "english_synonym" => [
+ "type" => "synonym",
+ "ignore_case" => true,
+ "expand" => true,
+ "synonyms" => [
+ 'pmi, pm instrumentation',
+ ]
+ ],
+ "english_stemmer" => [
+ "type" => "stemmer",
+ "language" => "light_english"
+ ]
+ ],
+ "analyzer" => [
+ "english_heavy" => [
+ "tokenizer" => "icu_tokenizer",
+ "char_filter" => ["html_strip"],
+ "filter" => [
+ "icu_folding",
+ "english_synonym",
+ "english_stemmer"
+ ]
+ ],
+ "english_light" => [
+ "tokenizer" => "icu_tokenizer",
+ "char_filter" => ["html_strip"],
+ "filter" => [
+ "icu_folding"
+ ]
+ ]
+ ]
]
];
- public static function index()
+ public static function index($locale = 'all')
{
- foreach (Locale::getLocales() as $locale) {
+ if ($locale !== 'all') {
self::indexLocale($locale);
+ return;
+ }
+ foreach (Locale::getLocales() as $l) {
+ self::indexLocale($l->locale);
}
}
$settings['analysis'] = $analysis;
}
+ $body = [
+ 'mappings' => self::_typeMapping($locale, true),
+ ];
+ if (count($settings) > 0) {
+ $body['settings'] = $settings;
+ }
+
Elasticsearch::indices()->create(
[
'index' => $index,
- 'body' => [
- 'settings' => $settings,
- 'mappings' => self::_typeMapping($locale, true),
- ]
+ 'body' => $body
]);
/** @var Cubist\Backpack\app\Magic\Menu\Item[] $pages */
- $pages = Menu::getAllNavigablePages();
-
+ $pages = Menu::getAllNavigablePages($locale);
$indexed = [];
foreach ($pages as $url => $page) {