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:
|
types:
|
||||||
set:
|
set:
|
||||||
mappings:
|
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" }
|
name: { analyzer: name_analyzer, search_analyzer: "standard" }
|
||||||
year: { type: integer }
|
year: { type: integer }
|
||||||
partCount: { type: integer }
|
partCount: { type: integer }
|
||||||
theme:
|
theme:
|
||||||
type: "object"
|
type: "object"
|
||||||
properties:
|
properties:
|
||||||
id: { analyzer: id_analyzer, search_analyzer: "standard" }
|
id: ~
|
||||||
name: { analyzer: name_analyzer, search_analyzer: "standard" }
|
# name: { analyzer: name_analyzer, search_analyzer: "standard" }
|
||||||
persistence:
|
persistence:
|
||||||
driver: orm
|
driver: orm
|
||||||
model: AppBundle\Entity\Rebrickable\Set
|
model: AppBundle\Entity\Rebrickable\Set
|
||||||
@ -55,7 +60,12 @@ fos_elastica:
|
|||||||
delete: false
|
delete: false
|
||||||
model:
|
model:
|
||||||
mappings:
|
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" }
|
name: { analyzer: name_analyzer, search_analyzer: "standard" }
|
||||||
aliases:
|
aliases:
|
||||||
type: "object"
|
type: "object"
|
||||||
@ -64,7 +74,7 @@ fos_elastica:
|
|||||||
category:
|
category:
|
||||||
type: "object"
|
type: "object"
|
||||||
properties:
|
properties:
|
||||||
id: { analyzer: id_analyzer, search_analyzer: "standard" }
|
id: ~
|
||||||
name: { analyzer: name_analyzer, search_analyzer: "standard" }
|
name: { analyzer: name_analyzer, search_analyzer: "standard" }
|
||||||
keywords:
|
keywords:
|
||||||
type: "object"
|
type: "object"
|
||||||
@ -75,8 +85,4 @@ fos_elastica:
|
|||||||
model: AppBundle\Entity\LDraw\Model
|
model: AppBundle\Entity\LDraw\Model
|
||||||
provider: ~
|
provider: ~
|
||||||
finder: ~
|
finder: ~
|
||||||
repository: AppBundle\Repository\Search\ModelRepository
|
repository: AppBundle\Repository\Search\ModelRepository
|
||||||
listener:
|
|
||||||
insert: false
|
|
||||||
update: false
|
|
||||||
delete: false
|
|
@ -9,9 +9,11 @@ use FOS\ElasticaBundle\Repository;
|
|||||||
class ModelRepository extends Repository
|
class ModelRepository extends Repository
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* Create search query from ModelSearch entity
|
||||||
|
*
|
||||||
* @param ModelSearch $modelSearch
|
* @param ModelSearch $modelSearch
|
||||||
*
|
*
|
||||||
* @return \Elastica\Query
|
* @return Query
|
||||||
*/
|
*/
|
||||||
public function getSearchQuery(ModelSearch $modelSearch)
|
public function getSearchQuery(ModelSearch $modelSearch)
|
||||||
{
|
{
|
||||||
@ -20,7 +22,7 @@ class ModelRepository extends Repository
|
|||||||
if ($searchQuery = $modelSearch->getQuery()) {
|
if ($searchQuery = $modelSearch->getQuery()) {
|
||||||
$query = new Query\MultiMatch();
|
$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->setQuery($searchQuery);
|
||||||
$query->setFuzziness(0.7);
|
$query->setFuzziness(0.7);
|
||||||
$query->setMinimumShouldMatch('80%');
|
$query->setMinimumShouldMatch('80%');
|
||||||
@ -47,6 +49,13 @@ class ModelRepository extends Repository
|
|||||||
return $this->find($query, $limit);
|
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)
|
public function findHighlighted($query, $limit = 500)
|
||||||
{
|
{
|
||||||
$modelSearch = new ModelSearch();
|
$modelSearch = new ModelSearch();
|
||||||
|
@ -9,9 +9,15 @@ use Elastica\Query\Match;
|
|||||||
use Elastica\Query\Range;
|
use Elastica\Query\Range;
|
||||||
use FOS\ElasticaBundle\Repository;
|
use FOS\ElasticaBundle\Repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class SetRepository
|
||||||
|
* @package AppBundle\Repository\Search
|
||||||
|
*/
|
||||||
class SetRepository extends Repository
|
class SetRepository extends Repository
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* Create search query from SetSearch entity
|
||||||
|
*
|
||||||
* @param SetSearch $setSearch
|
* @param SetSearch $setSearch
|
||||||
*
|
*
|
||||||
* @return Query
|
* @return Query
|
||||||
@ -23,7 +29,7 @@ class SetRepository extends Repository
|
|||||||
if ($searchQuery = $setSearch->getQuery()) {
|
if ($searchQuery = $setSearch->getQuery()) {
|
||||||
$query = new Query\MultiMatch();
|
$query = new Query\MultiMatch();
|
||||||
|
|
||||||
$query->setFields(['name', 'id']);
|
$query->setFields(['name', 'id', 'id.ngrams']);
|
||||||
$query->setQuery($searchQuery);
|
$query->setQuery($searchQuery);
|
||||||
$query->setFuzziness(0.7);
|
$query->setFuzziness(0.7);
|
||||||
$query->setMinimumShouldMatch('80%');
|
$query->setMinimumShouldMatch('80%');
|
||||||
@ -62,6 +68,11 @@ class SetRepository extends Repository
|
|||||||
return new Query($boolQuery);
|
return new Query($boolQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param SetSearch $setSearch
|
||||||
|
* @param int $limit
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
public function search(SetSearch $setSearch, $limit = 500)
|
public function search(SetSearch $setSearch, $limit = 500)
|
||||||
{
|
{
|
||||||
$query = $this->getSearchQuery($setSearch);
|
$query = $this->getSearchQuery($setSearch);
|
||||||
@ -69,6 +80,14 @@ class SetRepository extends Repository
|
|||||||
return $this->find($query, $limit);
|
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)
|
public function findHighlighted($query, $limit = 500)
|
||||||
{
|
{
|
||||||
$setSearch = new SetSearch();
|
$setSearch = new SetSearch();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user