MySQL boolean 搜索 - 如何过滤掉所有不包含至少 2 个输入字符串的结果?

标签 mysql search boolean

有谁知道如何缩小 MySQL boolean 匹配/反对搜索结果的范围,以仅检索包含至少 2 个输入词的记录?

这是查询:

   SELECT it_title, en_title, genre, author, year, place, movie_id, url, place_it
        . FROM movies, locations, sets
        . WHERE MATCH (movies.it_title) AGAINST('$loc' IN BOOLEAN MODE)

我只想检索具有至少 2 个键入单词的匹配项,比方说:

  • 如果用户输入:“midnight”,我想避免输入“midnight in paris”
  • 如果用户输入:“midnight in”,那么我想显示它。

干杯, enzyme 联免疫吸附试验

最佳答案

在您的示例中,这可能很棘手。 MySQL 的全文搜索具有最小字长(默认为 4),因此默认情况下不会为“in”编制索引。 “in”也是默认停用词之一,因此默认情况下不会被索引。单作品电影片名又如何呢?自然语言搜索是一个众所周知的难题(谷歌多年来一直致力于让他们的算法正确)。我建议不要创建自己的算法。

为什么不直接使用 MySQL 的自然语言搜索(而不是 boolean 值)。您可以将结果限制为前 X 个结果,或者可能限制为得分大于 X 的所有结果,并为用户提供再次搜索/查看所有结果等选项。

关于MySQL boolean 搜索 - 如何过滤掉所有不包含至少 2 个输入字符串的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9761729/

相关文章:

mysql - HDBC-mysql "command out of sync"

mysql - 如何在方括号中插入SQL表的列名?

php - 如何在ajax中使用重音从数据库读取数据

search - iOS 7 上的 iTunes 搜索 URL 显示 "Cannot connect to iTunes Store"

boolean - SwiftUI:检索和显示 boolean 文字值

mysql - 如何将条件放入包含的模型 Sequelize 中?

mysql - MySQL 和 PostgreSQL 通用的 MONTH() 和 YEAR() 函数的任何替代方法

string - 子序列查询的数据结构

无法从函数返回 boolean 值

c++ - 条件运算符奇怪的输出