- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的查询
SELECT * FROM myTable WHERE MATCH (name) AGAINST ("Apple M1" IN NATURAL LANGUAGE MODE)
Apple M1
作为结果,则得到
Orange M1
,然后获得第三或更多位置,我得到
Apple M-1
–这是我存储的值,我假设应该是第一个!
最佳答案
他们改善MySQL自然语言模式搜索的最好方法是改用Boolean Full-Text Searches。它将与自然语言模式搜索相同,但是您可以使用其他修饰符来微调结果,例如通过
> <
这两个运算符用于更改单词对分配给行的相关性值的贡献。 >运算符增加贡献,而<运算符减小贡献。
有一个细微的差别,布尔模式搜索不会根据相关性自动排序,因此您必须自己进行排序。
SELECT * FROM myTable
WHERE MATCH (name) AGAINST (">Apple M1" IN BOOLEAN MODE)
ORDER BY MATCH (name) AGAINST (">Apple M1" IN BOOLEAN MODE) desc
并请注意:如果您与
M-1
匹配(即使最小字长设置为2),则两个版本的全文本搜索都不会找到
M1
。它只会寻找exakt(通常不区分大小写)的单词匹配,不会寻找相似的单词(除非使用
*
)。它会通过某种算法“仅”权衡(精确)单词的组合,如果使用它们,还会修饰修饰符。
Apple M1
匹配,它将返回以任意顺序包含(不区分大小写)
Apple
或
M1
的行,例如
M1 apple
,
Apple M4
,
Apple M-1
和
Orange M1
。找不到
Apples M4
或
Orange M-1
,因为它们不是那个单词。例如。
like '%M-1%'
也找不到
Apple M1
。但是,如果愿意,您可以与
Apple*
匹配以找到
Apple
和
Apples
,但这始终位于单词的末尾,不可能使用
*Apple*
,则必须使用
like '%Apple%'
。
>Apple
,它将为
Apple
赋予更高的值。这只是一个数字,您可以将其添加到您的选择中,例如
select ..., MATCH (name) AGAINST (">Apple M1" IN BOOLEAN MODE) as score
对此有所了解。
innodb_ft_min_token_size
或对于myisam的ft_min_word_len
给出。所以您应该将其设置为2包括M1
(否则,该单词对您的搜索不会有任何影响。由于在您的示例中,您发现Orange M1
,因此我认为它设置正确)。-
通常被视为连字符。因此,您文本中的M-1
将分为两个单词M
和1
(根据您的最小单词长度设置,可能会或可能不会包含,因此请将其设置为1)。您可以通过向字符集添加-
来更改该行为(请参阅Fine-Tuning MySQL Full-Text Search,以Modify a character set file
开头的部分),但是如果您搜索blue-green
和/或blue
,则此方法将不再找到green
。a
和i
,因此即使最小字长为1,您也不会找到它们。您可以编辑该列表。M1
/
M-1
问题的一些想法。要根据您的确切要求进行调整,您必须添加有关搜索和数据的更多信息(可能是另一个问题),但有一些建议:
-
的用户输入:一次用-
,但用""
括起来,一次不使用。因此,如果用户输入Apple M-1
,则将创建一个Apple M1 "M-1"
的搜索(无论有没有经过修改的字符集都可以使用,但是没有新的字符集,您的最小字长必须为1)。如果用户输入M1
,那么您应该检测到该位置并将其替换为M1 "M-1"
。match (name, clean_name) against ("M1" ...
中。where match(...) against(...) or product_id like 'M%1%'
,where match(...) against(...) or product_id = 'M-1' or product_id = 'M1'
甚至where match(...) against(...) or name like '%M%1%'
之类的东西,但是后者可能会变慢得多并且包含很多噪音。而且它可能得分不正确,但是至少它将在结果集中。关于mysql - 如何改善mysql NATURAL LANGUAGE MODE的搜索查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37577774/
我正在开发基于桌面 (Windows 7) 的应用程序,并使用 Qt Creator v 5.6.0 开发程序。我有一个非常奇怪的问题,即 我的程序在 DEBUG 模式下崩溃,但在 RELEASE 模
我爱org-tables ,我用它们来记录各种事情。我现在正在为 Nix 记录一些单行代码(在阅读了 Domen Kožar 的 excellent guide 后,在 this year's Eur
org-mode 是否有一个键绑定(bind)可以在编号/项目符号列表项之间移动,就像您可以对标题一样? 喜欢的功能: org-forward-heading-same-level 大纲下一个可见标题
我知道这有点小,但它一直困扰着我。我正在为一个项目使用 Org-mode,我倾向于经常导出为 PDF 或 HTML,这使我的目录中散落着 PDF、Tex 和 HTML 文件。有没有办法将 Org 模式
有什么方法可以让 org-mode 继续编号列表而不是重新启动? 这是情况。你列了一个类似的列表: Sometimes you can restart the display by doing som
如何在组织模式文件中生成所有标签的枚举列表(例如 :tag:)?假设我有一个以下形式的列表: * Head1 :foo:bar: ** Subhead1 :foo: * Head2
我正在使用 org-mode(Emacs:24.3.1,org-mode: 7.9.3f 8.0.6)作为不同代码片段的数据库语言(目前主要是 elisp 和 python)。这在使用 org-mod
相关问题:org-mode: fontify code blocks natively 截至 2012 年 11 月 1 日,我已经获得了最新的 org-mode 和 emacs 版本(组织存储在 o
有谁知道在使用 ido 模式时区分 dired 模式缓冲区名称与迷你缓冲区中其他类型缓冲区的好方法吗?例如...在 dired 模式缓冲区名称末尾显示正斜杠? 最佳答案 您可以简单地更改dired-m
在这个示例脚本中 import argparse parser = argparse.ArgumentParser() parser.add_argument('--modes', help="tes
我第一次学习“操作系统”。在我的书中,我发现了关于“用户模式”和“内核模式”的这句话: "Switch from user to kernel mode" instruction is execute
我刚刚下载了 Processing 2.0 并尝试从“模式管理器”安装 Android 模式。但是在安装时出现错误提示:“无法将模式“Android 模式”移动到速写本”。我怎样才能摆脱这个错误? 最
在 android L 中,我尝试将相机闪光灯模式设置为 TORCH,它工作正常,但我无法将其更改回闪光灯模式 AUTO 或闪光灯模式 打开。我只能返回闪存模式 OFF。我尝试了像 camera360
有 2 台机器,A 和 B。有 2 个分支,p16 和 c2。 A 有一个 ext3 文件系统,但在 B 上,存档位于带有 vfat 的 truecrypt 驱动器上,mount 显示 rw,uid=
我有 linum-mode在我的 Emacs 配置中全局启用。全局启用意味着它也适用于不受欢迎的速度条。 我为这个问题找到的唯一建议是在存档的 Emacs 帮助邮件列表中,它建议以下 speedbar
Google Cloud Firestore 将很快取代旧的 Google Cloud Datastore。然后可以选择在“ native 模式”或“数据存储模式”下使用 Cloud Firestor
org-mode的版本我的版本 Emacs 附带的(24.5.2) 是 8.2.10 .我已安装版本 8.3.1从 ELPA 并将其添加到我的 init 文件中: (add-to-list 'load
The org-mode manual指出 org-mode 将“”“...在 shell 链接”“”中执行命令,但它不显示此类链接的语法。 我希望能有一个简单完整的示例来说明这种 shell 链接是
我正在尝试在 emacs 24 中使用 dart 模式和 d 模式。如果我单独使用任何一种模式,一切都很好。如果我分别对每种类型的文件使用这两种模式,我在尝试缩进 D 代码时会出错。 以下是在初始化时
我的应用程序中有 CupertinoDatePicker 以使用以下代码选择日期和时间: formatColumn( widget: Consumer( builder: (_, mcProvide
我是一名优秀的程序员,十分优秀!