问题标签 [match-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.
mysql - MySQL/MariaDB 匹配字母 'a' 和 'i' 总是 0
我的设置:
和
我正在创建一个表:
然后运行:
为什么,在地球上,字母“a”的匹配分数为 0?
同样的问题是字母“i”,所有其他字母都按预期匹配。
php - Laravel MySQL 匹配不返回结果
这是控制器:
所以控制器执行 else 语句,但是没有任何错误。
这是行查询:
mysql - 在 MySQL 中按相关性对布尔全文搜索进行排序,解释?
我一直在寻找资源来解释此查询如何按相关性对检索到的项目进行准确排序,但一直找不到。希望你们中的一个可以向我解释它的后勤工作?
在这种情况下,我知道该查询的前半部分在 messages.body 和 messages.subject 列中搜索搜索词“单词”。然后它返回那些结果,(不管布尔运算符如何)以“随机顺序”(按首先找到的内容排序,然后找到第二个,依此类推)。
然而,我不明白的是 MySQL 如何解释 WHERE 子句和查询的其余部分。重复前半部分代码如何按相关性重新排序结果?
例如,按 desc 对 users.user_id 列进行排序的 ORDER BY 子句。数字顺序对我来说很有意义,因为每一行/单元格都有明确的顺序(例如 - 3 、 2 、 1 等)
但是(回到原始查询)MySQL如何解释这些“单词”结果(单词,显然没有任何值/数字/清除顺序)并根据相关性对它们进行排序?
是因为布尔全文搜索为这些搜索词提供了隐藏的数值吗?就像如果 AGAINST 子句读取:
像“apple”的值为 100,“macintosh”的值为 -100,“microsoft”的值为 20,“windows”的值为 40(以反映运算符效果)?
我知道这过于简化了过程(尤其是在考虑一列是否包含多个这些搜索词时),但这是我得到的最好的。
我基本上需要的是外行术语解释 WHERE 子句(查询代码的第二半)对整个查询结果的影响。
php - “加号”关键字不适用于 mysql 全文搜索
我在本地数据库上使用 ' ' 之类的关键字iphone 6 plus
或任何包括 ' plus
' 关键字的 mysql 全文搜索,但它返回空结果。
当我使用类似的查询时,它仅用于加关键字原因match('keyword_map') against ('plus' IN BOOLEAN MODE)
。
此查询返回空结果。我的数据库中存储了很多带有加号关键字的数据。当我像搜索它一样使用mysql时。请任何人给我解决方案。
mysql - Mysql匹配字符串包含的位置
我有一个 sql,它将返回标题中带有“lars”的所有结果。结果可以是“lars dd”,也可以是“larsdd”。
搜索字符串应包含在单词中或为单词。
这是我正在运行的查询:
此查询返回如下结果:“lars dd”或“lars 123”。但不是“larsddd”。
我如何修改我的查询,它也返回“larsdd”。
我需要匹配,因为我按相关性排序结果。
mysql - 使用两个 LEFT JOIN、MATCH AGAINST 和 FULLTEXT 索引创建有效的 MySQL 查询
我正在尝试创建一个 SELECT 查询,该查询通过特定的关键字组合 3 个表LEFT JOIN
,然后生成结果表。MATCH
AGAINST
到目前为止,我的测试表明查询工作正常并且输出结果正确,但是我对通过LEFT JOIN
.
问题是 - 我应该添加额外的代码来反映FULLTEXT
索引要求,还是只正确索引原始表中的相关列就足够了?MATCH AGAINST
LEFT JOIN
问的原因是这个帖子。如果我理解它是正确的,我的代码不应该工作(因为“你不能定义全文索引......在 MySQL 中的多个表”)。因此MATCH AGAINST
forma.name_url
和v.model
, 因为它们没有被索引(或者这是我的理解方式,如果我错了,请纠正我:))。
但是,由于查询输出似乎是正确的,如果以下代码正确,或者我应该添加/修改某些内容,我需要专家建议:
mysql - 使用 MATCH ... AGAINST 优化 COUNT(*)
我正在COUNT(*)
使用MATCH() ... AGAINST()
. 我的具体查询如下:
几秒钟后我得到结果:
多次运行查询后,查询始终需要大约 16 秒才能完成。
有什么方法可以加快这个查询?为什么查询缓存不缓存此查询的结果?
如果有帮助,这里是EXPLAIN
andCREATE TABLE
语句:
看起来正在使用索引。(也许开销是查询仍然是 0Using where
正常key_len
吗?)
声明中没有什么太疯狂的CREATE TABLE
地方。
mysql - 为什么 MATCH 返回整数相关性而不是浮点数
我查看了 mysql 的布尔全文搜索文档,其中写到 MATCH 将返回一个浮点值,以及一个示例。我发现引用此状态的其他任何地方都是相同的,MATCH 将通过相关性分数返回一个浮点数。
但是当我运行这个查询时
我得到一个 0 或 1。
这是一些分数为 1 的行:
在我的理解中,“香蕉和草莓”这行应该比其他两个得分更高,因为有两个单词匹配?
mysql - MySQL:ORDER BY 子句减慢 MATCH AGAINST 搜索
我有以下 MySQL 查询:
当我进行搜索时,查询会使用 ORDER BY 子句加载 513.24 毫秒。当我删除它时,它运行 77.12 毫秒。
两者title_ascii
都是description_ascii
全文。
如何重写此查询以使运行速度比当前加载速度快得多?
解释输出:
mysql - MySql 按相关性与顺序匹配,以及另一列
我想match against
按相关性排序搜索,然后按listing_time
列排序。相关性搜索效果很好,但是当我添加 listing_time 列时,搜索会带来看起来像随机结果的结果。
这是我的sql
:
这会在 0.2 秒内带来 86 个结果,并且所有结果都有relevance 1
。伟大的。
但是当我尝试使用额外的 cloumn 进行相同的搜索时
我在 27 秒内得到 1000 个结果,它们的相关性无处不在。可怕。
那么我该如何正确地做到这一点呢?我想要相关结果,我希望它们按listing_time 排序。