【问题标题】:MySQL full text search by relevancy with wildcardMySQL全文搜索通过与通配符的相关性
【发布时间】:2016-04-15 12:07:07
【问题描述】:

我需要搜索产品并按相关性对其进行排序,为此我尝试了这个 MySQL 查询

SELECT *, MATCH(`SubProductName`) AGAINST ('+app*' IN BOOLEAN MODE) AS
relevance FROM `tblsubproducts1` WHERE MATCH(SubProductName) AGAINST 
('+app*' IN BOOLEAN MODE)  ORDER BY relevance DESC

例如,该查询返回:Apple Thunderbolt, Apple TV ... 作为结果。这是对的。

但是当我尝试使用'+usb*' 时,它不会返回任何行,而数据库包含SubProductName USB-C Charge Cable 的行,我可以通过匹配'+cable*' 找到它

澄清一下,我希望搜索可以使用部分单词,例如“app”代表苹果,这就是我添加* 的原因,但为什么它似乎并不总是有效,这让我感到困惑。是USB-C 中的- 还是...?

【问题讨论】:

    标签: mysql full-text-search full-text-indexing


    【解决方案1】:

    如果您使用 MyISAM,则全文索引的最小字长为 4。(这已记录在 here。)

    换句话说,“usb”甚至不在索引中。您需要更改此参数并重新构建索引。

    【讨论】:

    • 那不管搜索字符串是对的吗?仅与索引有关吗?
    • 换句话说,因为它适用于apple的“app”,问题是“usb”没有被索引而不是搜索字符串是usb?
    • @vlatkozelka 。 . .它与 USB-C 不匹配,因为连字符被视为单词分隔符。
    猜你喜欢
    • 2021-10-29
    • 2014-06-05
    • 1970-01-01
    • 2011-10-30
    • 2023-03-20
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多