问题标签 [against]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - MySQL match() against() 用于比较的多个关键字
MySQL match() against() 用于比较的多个关键字
这是我的查询:
我的数据库看起来像这样:
我真正需要的是将标题与最相关的标题进行比较,并用 ids 更新列“relevant_ids”
结果应该是这样的:
- 这意味着 title1 与 title6 , title2 和 title3 相关
- 我的表包含超过 100K 行是制作前 50 名相关标题的最快方法吗?
谢谢
php - MySql SELECT 查询跨多个字段的多个关键字
我需要一些关于SELECT
查询逻辑的帮助,希望有人能给我一个比我更好的主意。
我有一张这样的桌子:
用户将被允许通过输入一个或多个关键字在此表上进行搜索。
我现在拥有的查询MATCH
对每个字段的所有输入关键字执行一个查询AGAINST
,并且我得到与任何关键字匹配的行。因此,如果输入是“圆肉”,则结果将是第 1、3 和 4 行:
但是,我只需要返回包含所有关键字的行。关键字可能包含在三列中的任何一列中。
因此,如果用户输入“圆肉”,则只返回第 4 行。
我目前的想法很简单,可能不是很好(我预计多个关键字会出现一些性能问题):
有更好的方法吗?
php - Mysql全文搜索与匹配和反对
这可能是一个非常愚蠢的问题。但是我是 mysql 新手,没有太多经验。
我想创建一个全文搜索,在多个列中搜索一个字符串。我在互联网上找到了 Match and Against 的方法并进行了尝试。
这就是我留下的:
使用此代码,我收到一个错误,称为:
据我所知,如果查询中有错误信息,则会出现此错误。但是我不知道错误的信息是什么。所有列都存在。我做错了什么?
感谢您的阅读!希望你能帮我解决这个问题。
mysql - MySQL查询过滤包含搜索字符串中任何单词的记录
我必须开发一个简单的搜索页面,将搜索字符串与 MySQL 表中的字段匹配。
假设数据库表是“记录”并且考虑的字段是“记录标题”。还说以下是行中的“record_titles”。
字1
字2字1 字3 字4
字5 字2 字1字
6
现在在搜索表单中,假设用户提交搜索词,例如“word1 word7”、“word1”、“word1 word5”、“word1 word2”等,它应该返回在搜索词中至少包含一个词的记录标题。它不应将搜索字符串作为子字符串,例如,如果搜索词是“单词”,则不应返回上述记录集中的任何记录。
我尝试了以下操作,但有时与单个单词不匹配。
如何使用它(或另一种解决方案)来选择包含至少一个单词匹配的记录。
谢谢你。
吉尔
php - 根据值 preg_match 向内爆函数插入不同的“胶水”
我正在布尔模式下使用 MATCH 和 AGAINST 执行搜索查询,并且我将关键字存储在 ARRAY 中以显示它们像 TAGS,当我 IMPLODE 数组值以构造查询语句时它工作正常,但我想保留 BOLEAN 功能搜索,如“完全匹配”或其他特殊字符。
当数组值带有空格时是否可以插入引号?
然后我需要使用 implode 转换为 SQL 语句:
我尝试使用 ARRAY_FILTER() 但它只区分一个而不是另一个:
我的目标是在值带有两个以上单词时区分数组值,该函数为值添加引号
非常感谢你的帮助
mysql - sql Match() 针对无法识别
当我尝试这个查询时
phpmyadmin 给我一个警告,指出:
它仍然显示正确的结果。当我尝试另一个查询时:
它只会给我和错误而没有得到结果。我做错了什么吗?
编辑:我更新了 phpmyadmin 但我得到的是新的错误消息
mysql - Mysql匹配对排名
我目前正在使用类似的自动完成框查询。但是我想使用匹配,它应该更快,但我遇到了一些排序问题。
我想对这样的查询进行排名:
- [询问] %
- [询问]%
- % [询问]%
- %[询问]%
现在我使用
当我使用...
...所有结果都获得相同的“排名分数”。
例如,搜索Natio
返回Pilanesberg National Park
并National Park Kruger
具有相同的分数,而我希望第二个结果作为第一个结果,因为它以查询开头。
我怎样才能做到这一点?
mysql - MySQL 中的 MATCH AGAINST 不起作用
MySql 中的全文搜索有问题。我创建查询:
其结果:
如果有搜索,为什么数字3
有分数?lower
two words
mysql - 订购 mysqls MATCH() AGAINST() 相关性,顶部有完整的数学
我今天在使用 mysqls MATCH()...AGAINST() 时遇到了问题。
因为我想解决我的问题可能更容易,所以我创建了一个小的SQLFiddle。
我完全理解,为什么“Foo Bar Foo”在这个 Select 语句的工作方式上比“Foo Bar”更相关。但我想要的是“完全匹配”术语的相关性高于“完全匹配和更多”术语。
如果不使用“联合”来组合两个语句,这个结果是否可能?
答案(感谢 Gordon Linoff):
mysql - 在 mysql 中将 concat 与 where 匹配进行分组
我正在使用 SQL 开发一个简单的搜索功能并且卡住了。我使用 GROUP_CONCAT 将所有关键字放在一行中。关键字取自类别。
并非所有列都在此示例中。我已经把它剥离了
keywords
包含类似keyword1 keyword2 keyword3
.
上面的 SQL 正在运行。但是,我不能将 MATCH AGAINST 与虚拟值一起使用keywords
。
我已经阅读了我认为是一个丑陋的解决方法,添加以下内容:
LIKE 可能很慢,因为 HAVING 在 GROUP BY 之后我不能使用 OR 所以在这种情况下 HAVING 将覆盖 WHERE。
理想情况下,我也想使用 MATCH AGAINST keywords
。那么,我有哪些选择?
- 某种虚拟表?
- 子查询?
- 还有什么?
我可能需要一个示例代码来理解。