【发布时间】:2010-11-08 15:48:53
【问题描述】:
我正在尝试为我的网站添加搜索功能:
不幸的是我不知道怎么做?
对于搜索功能来说,LIKE 是否足够?例如:
SELECT * FROM Employees WHERE (Title Like 'Title%')
还是有更专业的方法? (例如正则表达式)
【问题讨论】:
我正在尝试为我的网站添加搜索功能:
不幸的是我不知道怎么做?
对于搜索功能来说,LIKE 是否足够?例如:
SELECT * FROM Employees WHERE (Title Like 'Title%')
还是有更专业的方法? (例如正则表达式)
【问题讨论】:
如果您询问如何在您的网站上实现搜索功能(例如每个/某些页面顶部的搜索框),那么这取决于您网站的实现。
【讨论】:
如果您想实现一个对您的关系数据执行即席搜索的系统,您可以使用以下几种方法:
【讨论】:
对于关系数据库,您几乎可以使用子字符串搜索 (LIKE),这可能不够灵活,而且只能(有效地)处理短列(如标题)。
因此您可能还需要使用全文搜索引擎(如 Lucene)。 在这种情况下,您搜索关键字的数据库之外会有一个全文搜索索引。
一些关系数据库的文本列具有可选的全文搜索功能。 使用这些,您可以使用 SQL 发出全文查询(甚至将其与针对其他列的查询结合起来)。 在 Oracle 中,它看起来像
SELECT id FROM table WHERE CONTAINS(text_column, 'java AND text', 1) > 0;
【讨论】:
您可能需要查看全文搜索引擎,例如 Lucene。
Lucene 是一个独立的软件编程,它可以索引您告诉它索引的任何内容(例如,数据库中的一些对象)。执行搜索时,首先使用 Lucene API 搜索全文索引并检索一组对象 ID。然后执行简单的数据库检索以获取具有这些 ID 的对象。
【讨论】:
喜欢是完美的
【讨论】: