【问题标题】:yii FULLTEXT index matching queryyii FULLTEXT 索引匹配查询
【发布时间】:2013-11-19 18:58:08
【问题描述】:

我想在 yii 框架中创建一个如下所示的 sql 查询:

mysql> SELECT id, body, MATCH (title,body) AGAINST
-> ('Security implications of running MySQL as root') AS score
-> FROM articles WHERE MATCH (title,body) AGAINST
-> ('Security implications of running MySQL as root');

我试试这个,但它不起作用:

    $dataProvider = new CActiveDataProvider('data', array(
            'criteria'=>array(
                'condition' => 'MATCH (title,body) AGAINST ('Security implications of running MySQL as root') AS score', 
WHERE MATCH (title,body) AGAINST ('Security implications of running MySQL as root')
                'limit' => '20',            ),
            'pagination' => false
        ));

【问题讨论】:

  • 试试model()->findAllBySql("Query")

标签: mysql sql yii match against


【解决方案1】:

http://www.yiiframework.com/doc/api/1.1/CDbCriteria#condition-detail

这是指 SQL 语句中的 WHERE 子句

所以应该只有MATCH (title,body) AGAINST ('Security implications of running MySQL as root')

http://www.yiiframework.com/doc/api/1.1/CDbCriteria#select-detail

这是指 SQL 语句中的 SELECT 子句

这里是id, body, MATCH (title,body) AGAINST ('Security implications of running MySQL as root') AS score的位置

【讨论】:

    【解决方案2】:

    首先,您需要对搜索列执行 ALTER 查询。

     ALTER TABLE item ADD FULLTEXT(title,description,location);
    

    要搜索的查询

     $query = \common\models\Item::find()
                 ->where(['is_active'=>'1']);
     $query->andWhere("MATCH(title,description,location) AGAINST 
     ('$searchKeywords' IN BOOLEAN MODE)"); 
    

    【讨论】:

      猜你喜欢
      • 2016-02-11
      • 2015-11-18
      • 2023-03-19
      • 1970-01-01
      • 2021-10-21
      • 2014-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多