Improve ES search

This commit is contained in:
DariusIII
2020-01-09 23:05:04 +01:00
parent ff9c1e5318
commit 1c59fb1c8e
8 changed files with 77 additions and 9 deletions
+4
View File
@@ -1034,12 +1034,14 @@ class NameFixer
$taggedRelease->update($updateColumns);
$taggedRelease->retag($determinedCategory['tags']);
if (config('nntmux.elasticsearch_enabled') === true) {
$newTitleDotless = str_replace(['.', '-'], ' ', $newTitle);
$data = [
'body' => [
'doc' => [
'id' => $release->releases_id,
'name' => $release->name,
'searchname' => $newTitle,
'plainsearchname' => $newTitleDotless,
'fromname' => $release->fromname,
],
'doc_as_upsert' => true,
@@ -1080,12 +1082,14 @@ class NameFixer
->groupBy('releases.id')
->first();
if ($new !== null) {
$newTitleDotless = str_replace(['.', '-'], ' ', $newTitle);
$data = [
'body' => [
'doc' => [
'id' => $release->releases_id,
'name' => $new->name,
'searchname' => $newTitle,
'plainsearchname' => $newTitleDotless,
'fromname' => $new->fromname,
'filename' => ! empty($new->filename) ? $new->filename : '',
],
+7 -8
View File
@@ -585,9 +585,8 @@ class Releases extends Release
return $value !== -1;
});
$fields = $phrases = [];
$phrases = [];
foreach ($searchFields as $key => $value) {
$fields[] = $key;
$phrases[] = $value;
}
@@ -599,7 +598,7 @@ class Releases extends Release
'query' => [
'query_string' => [
'query' => implode(' ', $phrases),
'fields' => $fields,
'fields' => ['searchname', 'plainsearchname', 'fromname', 'filename', 'name'],
'analyze_wildcard' => true,
'default_operator' => 'and',
],
@@ -745,7 +744,7 @@ class Releases extends Release
'query' => [
'query_string' => [
'query' => $searchName,
'fields' => ['searchname'],
'fields' => ['searchname', 'plainsearchname'],
'analyze_wildcard' => true,
'default_operator' => 'and',
],
@@ -936,7 +935,7 @@ class Releases extends Release
'query' => [
'query_string' => [
'query' => $name,
'fields' => ['searchname'],
'fields' => ['searchname', 'plainsearchname'],
'analyze_wildcard' => true,
'default_operator' => 'and',
],
@@ -1130,7 +1129,7 @@ class Releases extends Release
'query' => [
'query_string' => [
'query' => $name,
'fields' => ['searchname'],
'fields' => ['searchname', 'plainsearchname'],
'analyze_wildcard' => true,
'default_operator' => 'and',
],
@@ -1259,7 +1258,7 @@ class Releases extends Release
'query' => [
'query_string' => [
'query' => $name,
'fields' => ['searchname'],
'fields' => ['searchname', 'plainsearchname'],
'analyze_wildcard' => true,
'default_operator' => 'and',
],
@@ -1387,7 +1386,7 @@ class Releases extends Release
'query' => [
'query_string' => [
'query' => $name,
'fields' => ['searchname'],
'fields' => ['searchname', 'plainsearchname'],
'analyze_wildcard' => true,
'default_operator' => 'and',
],
@@ -1183,12 +1183,14 @@ class ProcessAdditional
->groupBy('releases.id')
->first();
if ($new !== null) {
$searchName = str_replace(['.', '-'], ' ', $new->searchname);
$data = [
'body' => [
'doc' => [
'id' => $this->_release->id,
'name' => $new->name,
'searchname' => $new->searchname,
'plainsearchname' => $searchName,
'fromname' => $new->fromname,
'filename' => ! empty($new->filename) ? $new->filename : '',
],
@@ -1764,12 +1766,14 @@ class ProcessAdditional
$release->retag($newCat['tags']);
if (config('nntmux.elasticsearch_enabled') === true) {
$newTitleDotless = str_replace(['.', '-'], ' ', $newTitle);
$data = [
'body' => [
'doc' => [
'id' => $this->_release->id,
'name' => $this->_release->name,
'searchname' => $newTitle,
'plainsearchname' => $newTitleDotless,
'fromname' => $this->_release->fromname,
],
'doc_as_upsert' => true,
+48 -1
View File
@@ -98,6 +98,35 @@ class NntmuxResetDb extends Command
'number_of_shards' => 2,
'number_of_replicas' => 0,
],
'mappings' => [
'properties' => [
'id' => [
'type' => 'long',
'index' => false,
],
'name' => ['type' => 'text'],
'searchname' => [
'type' => 'text',
'fields' => [
'sort' => [
'type' => 'keyword',
],
],
],
'plainsearchname' => [
'type' => 'text',
'fields' => [
'sort' => [
'type' => 'keyword',
],
],
],
'fromname' => ['type' => 'text'],
'filename' => ['type' => 'text'],
'add_date' => ['type' => 'date', 'format' => 'yyyy-MM-dd HH:mm:ss'],
'post_date' => ['type' => 'date', 'format' => 'yyyy-MM-dd HH:mm:ss'],
],
],
],
];
@@ -108,13 +137,31 @@ class NntmuxResetDb extends Command
}
$predb_index = [
'index' => 'predb',
'type' => 'predb',
'body' => [
'settings' => [
'number_of_shards' => 2,
'number_of_replicas' => 0,
],
'mappings' => [
'properties' => [
'id' => [
'type' => 'long',
'index' => false,
],
'title' => [
'type' => 'text',
'fields' => [
'sort' => [
'type' => 'keyword',
],
],
],
'filename' => ['type' => 'text'],
'source' => ['type' => 'text'],
],
],
],
];
\Elasticsearch::indices()->create($predb_index);
+2
View File
@@ -364,12 +364,14 @@ class Release extends Model
);
if (config('nntmux.elasticsearch_enabled') === true) {
$searchNameDotless = str_replace(['.', '-'], ' ', $searchName);
$data = [
'body' => [
'doc' => [
'id' => $ID,
'name' => $name,
'searchname' => $searchName,
'plainsearchname' => $searchNameDotless,
'fromname' => $fromName,
],
'doc_as_upsert' => true,
+2
View File
@@ -141,12 +141,14 @@ class ReleaseFile extends Model
->groupBy('releases.id')
->first();
if ($new !== null) {
$searchName = str_replace(['.', '-'], ' ', $new->searchname);
$data = [
'body' => [
'doc' => [
'id' => $id,
'name' => $new->name,
'searchname' => $new->searchname,
'plainsearchname' => $searchName,
'fromname' => $new->fromname,
'filename' => ! empty($new->filename) ? $new->filename : '',
],
+8
View File
@@ -27,6 +27,14 @@ $releases_index = [
],
],
],
'plainsearchname' => [
'type' => 'text',
'fields' => [
'sort' => [
'type' => 'keyword',
],
],
],
'fromname' => ['type' => 'text'],
'filename' => ['type' => 'text'],
'add_date' => ['type' => 'date', 'format' => 'yyyy-MM-dd HH:mm:ss'],
@@ -70,6 +70,7 @@ function populate_indexes($table, $max)
}
switch ($table) {
case 'releases':
$searchName = str_replace(['.', '-'], ' ', $row->searchname);
$data['body'][] = [
'index' => [
'_index' => 'releases',
@@ -81,6 +82,7 @@ function populate_indexes($table, $max)
'id' => $row->id,
'name' => $row->name,
'searchname' => $row->searchname,
'plainsearchname' => $searchName,
'fromname' => $row->fromname,
'filename' => $row->filename,
'add_date' => $row->adddate,