1
0
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:
Unknown 2017-06-03 14:43:42 +02:00
parent b6b5b50435
commit 5d8ce968b2
3 changed files with 47 additions and 13 deletions

View File

@ -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

View File

@ -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();

View File

@ -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();