Symfony2 Elasticsearch搜索有和没有特殊字符

时间:2016-06-22 08:38:00

标签: php jquery symfony elasticsearch query-builder

我正在西班牙商店搜索产品的搜索表单。没有翻译(并且不会在将来),只有西班牙语...但是,虽然文本应该用西班牙语显示,但人们用英语搜索...

我的意思是:

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": { }
}

0 个答案:

没有答案