mirror of
https://github.com/ToxicCrack/PrintABrick.git
synced 2025-05-21 06:30:10 -07:00
Improve elasticsearch index
This commit is contained in:
parent
b6b5b50435
commit
5d8ce968b2
@ -34,15 +34,20 @@ fos_elastica:
|
||||
types:
|
||||
set:
|
||||
mappings:
|
||||
id: { analyzer: id_analyzer, search_analyzer: "standard" }
|
||||
id:
|
||||
type: "keyword"
|
||||
fields:
|
||||
ngrams:
|
||||
type: 'text'
|
||||
analyzer: id_analyzer
|
||||
name: { analyzer: name_analyzer, search_analyzer: "standard" }
|
||||
year: { type: integer }
|
||||
partCount: { type: integer }
|
||||
theme:
|
||||
type: "object"
|
||||
properties:
|
||||
id: { analyzer: id_analyzer, search_analyzer: "standard" }
|
||||
name: { analyzer: name_analyzer, search_analyzer: "standard" }
|
||||
id: ~
|
||||
# name: { analyzer: name_analyzer, search_analyzer: "standard" }
|
||||
persistence:
|
||||
driver: orm
|
||||
model: AppBundle\Entity\Rebrickable\Set
|
||||
@ -55,7 +60,12 @@ fos_elastica:
|
||||
delete: false
|
||||
model:
|
||||
mappings:
|
||||
id: { analyzer: id_analyzer, search_analyzer: "standard" }
|
||||
id:
|
||||
type: "keyword"
|
||||
fields:
|
||||
ngrams:
|
||||
type: 'text'
|
||||
analyzer: id_analyzer
|
||||
name: { analyzer: name_analyzer, search_analyzer: "standard" }
|
||||
aliases:
|
||||
type: "object"
|
||||
@ -64,7 +74,7 @@ fos_elastica:
|
||||
category:
|
||||
type: "object"
|
||||
properties:
|
||||
id: { analyzer: id_analyzer, search_analyzer: "standard" }
|
||||
id: ~
|
||||
name: { analyzer: name_analyzer, search_analyzer: "standard" }
|
||||
keywords:
|
||||
type: "object"
|
||||
@ -76,7 +86,3 @@ fos_elastica:
|
||||
provider: ~
|
||||
finder: ~
|
||||
repository: AppBundle\Repository\Search\ModelRepository
|
||||
listener:
|
||||
insert: false
|
||||
update: false
|
||||
delete: false
|
@ -9,9 +9,11 @@ use FOS\ElasticaBundle\Repository;
|
||||
class ModelRepository extends Repository
|
||||
{
|
||||
/**
|
||||
* Create search query from ModelSearch entity
|
||||
*
|
||||
* @param ModelSearch $modelSearch
|
||||
*
|
||||
* @return \Elastica\Query
|
||||
* @return Query
|
||||
*/
|
||||
public function getSearchQuery(ModelSearch $modelSearch)
|
||||
{
|
||||
@ -20,7 +22,7 @@ class ModelRepository extends Repository
|
||||
if ($searchQuery = $modelSearch->getQuery()) {
|
||||
$query = new Query\MultiMatch();
|
||||
|
||||
$query->setFields(['name', 'id', 'aliases.id', 'keywords.name']);
|
||||
$query->setFields(['name', 'id', 'id.ngrams', 'aliases.id', 'keywords.name']);
|
||||
$query->setQuery($searchQuery);
|
||||
$query->setFuzziness(0.7);
|
||||
$query->setMinimumShouldMatch('80%');
|
||||
@ -47,6 +49,13 @@ class ModelRepository extends Repository
|
||||
return $this->find($query, $limit);
|
||||
}
|
||||
|
||||
/**
|
||||
* Find models by query with highlighted matched values
|
||||
*
|
||||
* @param string $query
|
||||
* @param int $limit
|
||||
* @return mixed
|
||||
*/
|
||||
public function findHighlighted($query, $limit = 500)
|
||||
{
|
||||
$modelSearch = new ModelSearch();
|
||||
|
@ -9,9 +9,15 @@ use Elastica\Query\Match;
|
||||
use Elastica\Query\Range;
|
||||
use FOS\ElasticaBundle\Repository;
|
||||
|
||||
/**
|
||||
* Class SetRepository
|
||||
* @package AppBundle\Repository\Search
|
||||
*/
|
||||
class SetRepository extends Repository
|
||||
{
|
||||
/**
|
||||
* Create search query from SetSearch entity
|
||||
*
|
||||
* @param SetSearch $setSearch
|
||||
*
|
||||
* @return Query
|
||||
@ -23,7 +29,7 @@ class SetRepository extends Repository
|
||||
if ($searchQuery = $setSearch->getQuery()) {
|
||||
$query = new Query\MultiMatch();
|
||||
|
||||
$query->setFields(['name', 'id']);
|
||||
$query->setFields(['name', 'id', 'id.ngrams']);
|
||||
$query->setQuery($searchQuery);
|
||||
$query->setFuzziness(0.7);
|
||||
$query->setMinimumShouldMatch('80%');
|
||||
@ -62,6 +68,11 @@ class SetRepository extends Repository
|
||||
return new Query($boolQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SetSearch $setSearch
|
||||
* @param int $limit
|
||||
* @return array
|
||||
*/
|
||||
public function search(SetSearch $setSearch, $limit = 500)
|
||||
{
|
||||
$query = $this->getSearchQuery($setSearch);
|
||||
@ -69,6 +80,14 @@ class SetRepository extends Repository
|
||||
return $this->find($query, $limit);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Find sets by query with highlighted matched values
|
||||
*
|
||||
* @param string $query
|
||||
* @param int $limit
|
||||
* @return mixed
|
||||
*/
|
||||
public function findHighlighted($query, $limit = 500)
|
||||
{
|
||||
$setSearch = new SetSearch();
|
||||
|
Loading…
x
Reference in New Issue
Block a user