【问题标题】:How is a search in a Database realized?数据库中的搜索是如何实现的?
【发布时间】:2010-11-08 15:48:53
【问题描述】:

我正在尝试为我的网站添加搜索功能:
不幸的是我不知道怎么做?

对于搜索功能来说,LIKE 是否足够?例如:

SELECT * FROM Employees WHERE (Title Like 'Title%')

还是有更专业的方法? (例如正则表达式)

【问题讨论】:

    标签: database search


    【解决方案1】:

    如果您询问如何在您的网站上实现搜索功能(例如每个/某些页面顶部的搜索框),那么这取决于您网站的实现。

    1. 如果您使用数据库存储来存储所有站点内容,那么您可以使用数据库搜索。但是在内容/标题/等中搜索。或使用全文搜索。
    2. 如果您使用任何 CMS/门户解决方案,它可能已经支持搜索功能。
    3. 如果您使用静态内容,则必须通过文件搜索来实现。

    【讨论】:

      【解决方案2】:

      如果您想实现一个对您的关系数据执行即席搜索的系统,您可以使用以下几种方法:

      1. 使用开源搜索引擎,例如Lucene
      2. 使用数据库的文本索引功能 - 如果有的话 - 这取决于您使用的数据库。信息:Oracle/SQL Server/MySQL/PostgreSQL
      3. 使用inverted index 编写您自己的搜索系统 - 尽管如果您能够使用选项 1 或 2,这有点毫无意义。

      【讨论】:

      • 有趣,我从来没有真正想过全文索引是如何工作的。
      【解决方案3】:

      对于关系数据库,您几乎可以使用子字符串搜索 (LIKE),这可能不够灵活,而且只能(有效地)处理短列(如标题)。

      因此您可能还需要使用全文搜索引擎(如 Lucene)。 在这种情况下,您搜索关键字的数据库之外会有一个全文搜索索引。

      一些关系数据库的文本列具有可选的全文搜索功能。 使用这些,您可以使用 SQL 发出全文查询(甚至将其与针对其他列的查询结合起来)。 在 Oracle 中,它看起来像

      SELECT id FROM table WHERE CONTAINS(text_column, 'java AND text', 1) > 0;
      

      【讨论】:

        【解决方案4】:

        您可能需要查看全文搜索引擎,例如 Lucene

        Lucene 是一个独立的软件编程,它可以索引您告诉它索引的任何内容(例如,数据库中的一些对象)。执行搜索时,首先使用 Lucene API 搜索全文索引并检索一组对象 ID。然后执行简单的数据库检索以获取具有这些 ID 的对象。

        【讨论】:

          【解决方案5】:

          喜欢是完美的

          【讨论】:

            猜你喜欢
            • 2013-02-09
            • 1970-01-01
            • 1970-01-01
            • 2016-02-21
            • 2019-04-15
            • 2015-04-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多