有谁知道如何缩小 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/