【问题标题】:MySQL All-word searchMySQL 全词搜索
【发布时间】:2011-05-25 22:51:17
【问题描述】:

我有一个关于 MySQL ALL-Word 搜索功能的简单问题:

是否可以在 MySQL 中执行 ALL-WORD 搜索并使单词的顺序很重要? (显然,默认情况下单词的顺序无关紧要)

例如,假设我有这个查询:

SELECT firstname, lastname FROM Person
WHERE MATCH (firstname, lastname)
      AGAINST ("+firstname +lastname" IN BOOLEAN MODE);

我希望名字总是出现在结果中的姓氏之前

我怎样才能做到这一点?

提前感谢您的帮助

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    我不明白你的意思

    I want the firstname to ALWAYS appear before the lastname in the results
    

    这没有意义,因为根据您的查询,返回的所有记录都将匹配名字和姓氏。

    反正没有记分系统。 但也许您可以尝试使用波浪号运算符来降低相关性

    ~

    前导波浪号表示否定 运算符,导致单词的 对行的相关性的贡献 是消极的。这对 标记“噪音”字样。一排 包含这样一个词的评分较低 比其他人,但不排除 总的来说,就像 - 运算符。

    【讨论】:

    • SELECT firstname, lastname FROM Person WHERE MATCH (firstname, lastname) AGAINST ("+firstname +lastname" IN BOOLEAN MODE);将返回如下结果:“名字是 blahblah,姓氏是 blahblah”或“姓氏是 blahblah,名字是 blahblah”。顺序无关紧要。我希望顺序很重要,我希望名字总是出现在姓氏之前。我知道我可以使用 EXACT 单词搜索来做到这一点,但我想使用全单词搜索来做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2011-08-03
    相关资源
    最近更新 更多