我正在西班牙商店搜索产品的搜索表单。没有翻译(并且不会在将来),只有西班牙语...但是,虽然文本应该用西班牙语显示,但人们用英语搜索...
我的意思是:
Product name is : Sofá
But people ussualy search like : Sofa
对于弹性搜索来说,这个过程并不那么容易......如果我在搜索中输入Sofá它可以工作,简单的沙发什么都找不到...
一种解决方案是在数据库中创建更多字段...用于没有特殊字符的文本......但这不是所有者想要的解决方案......有没有其他方法可以做到这一点?对于搜索,我使用自己的查询:
public function findProductsBySearch($data)
{
$qb = $this->createQueryBuilder('o');
$qb->addSelect('trans')->join('o.translations', 'trans');
$qb->addSelect('gallery')->join('o.gallery', 'gallery');
$qb->addSelect('media')->join('gallery.galleryHasMedias', 'media');
$qb->addSelect('image')->join('media.media', 'image');
$qb->andWhere("LOWER(o.adminTitle) LIKE :name");
$qb->orderBy("o.base", 'ASC');
$qb->SetParameter('name', '%'.strtolower($data).'%');
return $qb;
}
但也会返回0:
{
"query": {
"bool": {
"must": [
{
"term": {
"adminTitle": "sofa"
}
}
],
"must_not": [ ],
"should": [ ]
}
},
"from": 0,
"size": 10,
"sort": [ ],
"aggs": { }
}