【问题标题】:How can I match "laptop" and "laptops" when search for "laptop" is performed using MySQL's match...against full-text search?当使用 MySQL 匹配执行搜索“笔记本电脑”时,如何匹配“笔记本电脑”和“笔记本电脑”...针对全文搜索?
【发布时间】:2011-01-14 13:28:03
【问题描述】:

我正在尝试在我的网站中构建搜索功能。搜索是该网站的主要目的,我在 MySQL 搜索功能方面遇到了一些问题。

我希望能够使用单个搜索字符串针对多个文本字段进行搜索。

我正在使用 MySQL 的 match...against 语句来执行全文搜索。我在布尔模式下运行它。

我的 SQL 看起来像这样:

SELECT * FROM ... 
WHERE MATCH(table.field1, table.field2, table.field3) 
                           AGAINST ('laptop' IN BOOLEAN MODE)

目前,这会返回包含单词 laptop 但不包含单词 laptops 的结果。

我需要它返回包含单词laptoplaptops 的结果。

【问题讨论】:

    标签: sql mysql search full-text-search


    【解决方案1】:

    在短语末尾使用通配符 *

    SELECT * FRO... WHERE MATCH(table.field1, table.field2, table.field3) AGAINST ('laptop*') IN BOOLEAN MODE)
    

    【讨论】:

      【解决方案2】:

      如果您的要求更笼统,则需要完整的词干提取支持,例如例如,将“测试”或“测试”与全文索引中的测试相匹配,然后您可以使用替代的全文索引插件。谷歌搜索提供了许多可能性,但快速浏览一下就会发现大多数是商业而非开源的。

      【讨论】:

        【解决方案3】:

        【讨论】:

          【解决方案4】:

          或者您可以使用专用的“可索引”字段并预先提取内容(和搜索查询)。雪球项目有多种语言的词干分析器。

          【讨论】:

            猜你喜欢
            • 2019-07-30
            • 1970-01-01
            • 2014-07-08
            • 2023-01-03
            • 1970-01-01
            • 2022-01-25
            • 2023-04-03
            • 2011-12-17
            • 1970-01-01
            相关资源
            最近更新 更多