【问题标题】:Tag/Fulltext-Search in MySQL with PHP使用 PHP 在 MySQL 中进行标记/全文搜索
【发布时间】:2014-11-10 11:28:48
【问题描述】:

正如您从标题中看到的那样,我正在开发一个应该提供搜索选项的项目。用户应该输入几个单一的关键字,结果应该按相关性列出。因为我的数据库有大约 1k-2k 行,所以我需要尽可能准确。 研究指出要制作更多包含行标签的表格。我为此做了一个原型,但现在对每一行都这样做会很耗时,因为数据库已经存在。我读过制作某种“爬虫”是一种可能性吗?我还听说使用 ISAM 数据库是一种选择。

谁能建议我一个可能的解决方案?或者也许是一些例子?

我对 PHP 和 MySQL 有基本的了解。

亲切的问候, 力0234

【问题讨论】:

    标签: php mysql search full-text-search


    【解决方案1】:

    您需要将 FULLTEXT INDEX 添加到所有可搜索字段并使用 MATCH ... AGAINST 关键字

    SELECT * FROM searchable_table WHERE MATCH(searchable_field) AGAINST('Keyword');
    SELECT *, MATCH(searchable_field, searchable_field2) AGAINST('Keyword') as Relevance FROM searchable_table WHERE MATCH(searchable_field, searchable_field2) AGAINST('Keyword');
    

    注意:您可以在 MATCH(...) 中使用少量字段,并在 SELECT 子句中使用它来获取相关性。不要犹豫使用两次,MySQL 会优化查询。

    请参考 MySQL 文档http://dev.mysql.com/doc/refman/5.6/en/innodb-fulltext-index.htmlhttp://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html

    【讨论】:

    • 谢谢!我想这会帮助我继续下去:))
    • 在这种情况下 - 将答案标记为有效且适用。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 2012-04-16
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多