标签: match-against

如何使用MYSQL生成分数时检查所有联接

我正在使用MYSQL为查询返回的每个结果生成一个分数.然后按分数排序结果.

似乎没有正常工作的部分是我正在尝试为已搜索的每个标记添加分数并将结果分配给.所以我要说我搜索标签"example","test and"tag"并将我的一个结果分配给标签"example","test","someothertag"它应该得到10分因为有2场比赛.

实际情况是,如果匹配,我得分为5,无论匹配多少标签.如果没有匹配的标签,则为0.

以下是从搜索生成的查询之一的示例.

        SELECT DISTINCT results.*,
                    ( 
                        5*(MATCH(tags.name) AGAINST('"self employed"' IN BOOLEAN MODE)) +
            5*(MATCH(tags.name) AGAINST('"rental income"' IN BOOLEAN MODE)) +
            5*(MATCH(tags.name) AGAINST('"commission income"' IN BOOLEAN MODE)) +
            5*(MATCH(tags.name) AGAINST('"bankruptcy"' IN BOOLEAN MODE)) +
            5*(MATCH(tags.name) AGAINST('"condo approval"' IN BOOLEAN MODE)) +

                        1*usefulness + 
                        10*shares 
                    ) AS score 
        FROM results
        INNER JOIN categories c on results.ID = c.RESULT_ID
        INNER JOIN tags ON results.id = tags.result_id
        WHERE c.name in ('purchase', 'condo', 'va')
        AND ( tags.name = 'self employed' OR tags.name …
Run Code Online (Sandbox Code Playgroud)

mysql search boolean join match-against

11
推荐指数
1
解决办法
335
查看次数

Mysql使用MATCH()AGAINST()搜索字符串和数字

我对MATCH AGAINST功能有问题.

以下查询给出了相同的结果:

SELECT * FROM models MATCH(name) AGAINST('Fiat 500')
SELECT * FROM models MATCH(name) AGAINST('Fiat')
Run Code Online (Sandbox Code Playgroud)

如何在FULL TEXT表的列中搜索字符串和数字?

谢谢

mysql search numbers match-against

10
推荐指数
1
解决办法
2万
查看次数

mysql匹配不返回不区分大小写的结果

我有两张桌子:

CREATE TABLE IF NOT EXISTS `test1` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `bucket_id` int(10) unsigned NOT NULL COMMENT 'folder this component belongs to',
  `test1_name` varchar(81) NOT NULL COMMENT 'Name of this component',
  `test1_desc` varchar(1024) NOT NULL COMMENT 'Component Description',
  PRIMARY KEY (`id`),
  FULLTEXT KEY `test1_search` (`test1_name`,`test1_desc`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

CREATE TABLE IF NOT EXISTS `bucket` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `bkt_name` varchar(81) NOT NULL COMMENT 'The name of this bucket',
  `bkt_desc` varchar(1024) NOT …
Run Code Online (Sandbox Code Playgroud)

mysql join case-insensitive match-against

8
推荐指数
2
解决办法
2899
查看次数

MySQL中MATCH('...'IN NATURAL LANGUAGE MODE)的最大可能值范围是多少?

MySQL提供FULLTEXT可以使用MATCH (col1,col2,...) AGAINST (expr [search_modifier])构造检索的索引.有几种全文搜索变体,其中一种(和默认的)是自然语言全文搜索.

那么MATCH的最大可能值是什么('...'IN NATURAL LANGUAGE MODE)?


例:

这个查询

SELECT
    courses.id,
    courses.title,
    MATCH (coursedata.title) AGAINST ('Basketball') AS relevance
FROM
    courses
JOIN
    coursedata ON coursedata.id = courses.coursedata_id
WHERE
    MATCH (coursedata.title) AGAINST ('Basketball') > 0
Run Code Online (Sandbox Code Playgroud)

返回带有列的结果表relevance,我们在其中存储coursedata.title行的相关性值'Basketball'.或相关值'Basketball'coursedata.title行?无论如何,我们在那里存储MATCH(...)函数的输出.就我而言,我从歌厅值03.695953130722046.

mysql full-text-search relevance match-against

8
推荐指数
1
解决办法
520
查看次数

单引号的全文查询

当我尝试使用带有单引号和星号通配符的字符串(即"levi's*")尝试在布尔模式下进行全文搜索时,我遇到了问题:它似乎也搜索以"s"开头的所有单词,就像"长矛"一样,据我所知,引用应该被认为是单词的一部分,而两个单引号('')将是一个单词分隔符......但也许我错了.

请看这里的例子:http://www.sqlfiddle.com/#!2/3dd3/2/0 - 第二行不应该在那里

我该怎么做我想要的?

mysql full-text-search match-against

6
推荐指数
1
解决办法
4521
查看次数

在 MySQL 中为全文搜索添加 *(星号)

我知道星号是一个通配符,可以附加到全文搜索词的末尾,但是如果我搜索的关键字是后缀怎么办?例如,我希望能够搜索“ames”并返回包含名称“james”的结果。这是我当前的查询不起作用,因为您不能在全文搜索中添加星号。

SELECT * FROM table WHERE MATCH(name, about, address) AGAINST ("*$key*" IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)

我会简单地切换到使用 LIKE,但对于我的数据库大小来说太慢了。

mysql database full-text-search boolean match-against

5
推荐指数
2
解决办法
2708
查看次数

使用 Mysql 的子查询(AGAINST 的错误参数)

当我使用 MySql使用MATCH AGAINST执行此 查询时 (请参阅查询 1st),此查询中的问题产生了这样的错误(请参阅错误),或者当我使用=执行相同的查询时, 它们正常执行(请参阅查询 2nd)。

我的问题是我对反对声明做错了什么?

查询第一

SELECT (SELECT COUNT(up.`user_id`) 
FROM `users_post` up WHERE MATCH (up.`user_id`) AGAINST (uf.`user_id`)) 
AS user_count 
FROM `users` uf
Run Code Online (Sandbox Code Playgroud)

错误

enter code hereError Code : 1210
Incorrect arguments to AGAINST
(0 ms taken)
Run Code Online (Sandbox Code Playgroud)

更新

查询 2

SELECT 
(SELECT COUNT(up.`user_id`) 
FROM `users_post` up WHERE up.`user_id` = uf.`user_id`) 
AS user_count 
FROM `users` uf
Run Code Online (Sandbox Code Playgroud)

mysql full-text-search subquery match-against

4
推荐指数
1
解决办法
2962
查看次数

MySQL MATCH() AGAINST() FULLTEXT索引——实现部分字符串匹配与短语匹配相结合

我有一个表,其中的列内容具有FULLTEXT 索引

\n

我想利用MATCH()在大文本上的速度。

\n

我希望搜索尽可能准确。

\n

当我这样搜索短语字符串“ large Truck ”时:

\n
SELECT * FROM MyTable WHERE MATCH(content) AGAINST('"large truck"' IN BOOLEAN MODE);\n
Run Code Online (Sandbox Code Playgroud)\n

有些实例被遗漏了。

\n

我的表:

\n
|   content    |\n----------------\n|Large \\n truck| FOUND \xe2\x9c\x93\n----------------\n|large truck   | FOUND \xe2\x9c\x93\n----------------\n|large trucks  | *PLURAL MISSED!\n----------------\n|large truckl  | *TYPE-O MISSED!\n
Run Code Online (Sandbox Code Playgroud)\n

如果我使用标准的LIKE /通配符方法:

\n
SELECT * FROM  `MyTable` WHERE  `content` LIKE  '%large truck%'\n
Run Code Online (Sandbox Code Playgroud)\n

我的表:

\n
|   content    |\n----------------\n|Large \\n truck| *MISSED!\n----------------\n|large truck   | …
Run Code Online (Sandbox Code Playgroud)

mysql string against match match-against

4
推荐指数
1
解决办法
3765
查看次数

如何在MySQL表中搜索单词?比较反对还是喜欢?

我为一些公司提供了一张桌子,这些公司可能在不同国家拥有许多分支 这些国家被插入countries现场.
现在,我必须建立一个搜索系统,允许用户查找在特定国家/地区拥有任何分支的公司.
我的问题是:我必须使用哪一个?MATCH AGAINST还是LIKE?查询必须搜索所有记录才能找到完整匹配的项目.

  • 注意:记录可能有不同的国家名称用逗号分隔.

mysql search select match-against sql-like

3
推荐指数
1
解决办法
1983
查看次数

MySQL 匹配布尔模式在中间词上不返回任何内容

我在 MySQL 数据库中使用 Match Against 时遇到问题,希望有人能提供帮助。

这是我数据库中数据的示例:

id   name
1    really bitter chocolate
2    soft cheese
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时:

SELECT * FROM food WHERE (name) LIKE "%bitter%"
Run Code Online (Sandbox Code Playgroud)

这带来了第一个结果:

1    really bitter chocolate
Run Code Online (Sandbox Code Playgroud)

然而,它是一个更大的查询的一部分,当我运行 Match Against 代码时,我没有从这些查询中得到任何返回:

SELECT * FROM food WHERE MATCH (name) AGAINST ("bitter")

SELECT * FROM food WHERE MATCH (name) AGAINST ("bitter", IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)

我打开了全文搜索,当我搜索名称的开头时它可以工作:

SELECT * FROM food WHERE MATCH (name) AGAINST ("really")

SELECT * FROM food WHERE MATCH (name) AGAINST ("really", IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)

两者都返回:

1    really …
Run Code Online (Sandbox Code Playgroud)

mysql sql match-against

2
推荐指数
1
解决办法
1万
查看次数

MySQL与AGAINST的多个值匹配

我认为这是一个非常简单的查询,但我无法在任何编程书籍或网络上找到它.

我有这个查询:SELECT*FROM test WHERE MATCH(column1,column2)AGAINST('value1');

但我需要AGAINST有多个值,例如(value1,value2,value3)

有人可以帮忙吗?

mysql database match-against

1
推荐指数
1
解决办法
2281
查看次数