按索引搜索学说

时间:2012-07-27 10:55:09

标签: mysql database symfony doctrine

我对数据库中的索引知之甚少,所以我的问题可能很愚蠢,但...... 我有人(姓名,组织,工作等)的参数,现在我在prePersist()方法中创建索引字符串,如下所示:

$this->search_index = $this->name.' '.$this->surname.' '.$this->orgnaization;

进一步搜索带有“”的爆炸字符串,并使用LIKE将每个部分与search_index进行比较。

但这看起来很疯狂。什么是最佳做法? 附:我的示例代码:

$queryBuilder = $this->createQueryBuilder('s');
foreach(explode(" ", $query) as $key=>$part){
     $queryBuilder->orWhere('s.searchindex LIKE:name'.$key)
          ->setParameter('name'.$key, $part);
}

1 个答案:

答案 0 :(得分:0)

如果我理解你是对的,我想那时你正在寻找这样的东西:

$collection = Doctrine::getTable('User')->createQuery('u');
    ->where('column_name LIKE ?', $this->name)
    ->orWhere('column_surname LIKE ?', $this->surname)
    ->orWhere('column_organization LIKE ?', $this->organization)
    ->execute();