MySQL与MySQL

时间:2015-05-31 13:23:34

标签: mysql match-against

是否可以使用匹配/反对来匹配关键字,但是如果它出现在特定短语中则不行?

例如,如果我想匹配" dog"但不是"热狗":

"这是一只狗"应该匹配。

"这是一只热狗"不应该匹配。

"热狗不是狗"应该匹配,因为第二个"狗"不属于热狗"。

我的应用程序搜索用户在大型数据库中定义的数百个关键字(~100K记录),因此该查询的执行非常重要。

编辑: 我想只匹配整个单词,而不是作为另一个单词的一部分出现的关键字。

1 个答案:

答案 0 :(得分:1)

如果你replace hot dog '' match 'dog'SELECT * FROM mytable WHERE MATCH (REPLACE(mycol,'hot dog','')) AGAINST ('dog'); MATCHMATCH SELECT * FROM mytable WHERE REPLACE(mycol,'hot dog','') like '%dog%'; SELECT * FROM mytable WHERE REPLACE(mycol,'hot dog','') regexp '[[:<:]]dog[[:>:]]' 'dog'Object.assign(Thing.prototype, { hello(arg1, arg2) { // magic goes here } }); 类似的东西:

Thing.prototype.hello = function (arg1, arg2) {
    // magic goes here
};

刚刚尝试过,users似乎工作方式不同。它需要在目标列上存在全文索引,并且只能将它们命名为<?php //1 $router->add('/users',array( 'module' =>'users', 'namespace'=>'Backend\users\Controllers\\', 'controller'=>'index', 'action' => 'index' )); //2 $router->add('/users/:params/',array( 'module' => 'users', 'namespace'=>'Backend\users\Controllers\\', 'controller'=>'index', 'action' => 'index', 'params'=>1 )); //3 $router->add('/users/:action',array( 'module' => 'users', 'namespace'=>'Backend\users\Controllers\\', 'controller'=>'index', 'action'=>1 )); //4 $router->add('/users/:action/:params',array( 'module' => 'users', 'namespace'=>'Backend\users\Controllers\\', 'controller'=>'index', 'action'=>1, 'params'=>2 )); ?> 函数的参数。因此:我的方法不起作用。但是呢?

http://www.example.com/admin/users/

好的,那么也许这会有所帮助

http://www.example.com/admin/users/2

仅查找http://www.example.com/admin/users/search/1是单独单词的情况?