如何实现数据库中的搜索?

时间:2009-07-07 10:30:10

标签: database search

我正在尝试对我的网站进行搜索功能:
不幸的是我不知道怎么办?

对搜索功能来说足够了吗? e.g:

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

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

5 个答案:

答案 0 :(得分:6)

如果您想实施一个系统来对关系数据执行特殊搜索,可以使用一些方法:

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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

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

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:-1)

LIKE很完美