2011-03-02 67 views
2

这是一个相当广泛的问题,但我希望能够在正确的方向(技术和方法)上获得推动力。如何在iphone应用程序的数据库中实现搜索系统

好吧,我有一个iPhone应用程序(我正在开发),通过http请求与Web服务(C#)一起使用。 Web服务连接到底层数据库,根据请求提取必要的数据并将其返回给应用程序。

现在,我需要在应用程序中实现一个搜索系统。用户搜索一些单词,我需要提供最相关的结果。搜索必须在数据库中的不同表上执行。每个表格可以在许多列中搜索。例如,在通过人员表进行搜索时,我需要在名字,姓氏,公司和其他字段中进行搜索。其他表格还有其他重要栏目。

我有很多问题,我甚至不知道从哪里开始。

如何让我的sql查询进行搜索,但仍然足够快。我是否需要以某种方式制作带索引内容的额外表格?
我应该如何将相关因子添加到结果中,以便最终只过滤最相关的结果?例如,如果用户搜索史密斯,也许有一个人叫史密斯甚至公司。它们应该显示在描述中可以有史密斯的任何其他内容之前。

我知道这个问题有点模糊/宽泛,但如果有人愿意,我可以解释更多。

谢谢

+0

我很乐意接受一个答案,指出我的方向正确 – 2011-03-02 01:20:23

回答

1

最后,我决定使用Lucene。这是一项非常棒的技术,即使我在开始阅读3/4的“Lucene in Action”一书之后有些怀疑,我很清楚它拥有我需要的一切(以及更多)。

我知道这不是一个全功能的搜索系统(需要所有的元素),而只是一个处理搜索系统核心的库。它需要一些工作来将它与我的应用程序/ web服务/数据库集成。我会让你知道它是怎么回事:)

感谢您的输入!

2

这种取决于哪种语言/ RDBMS你正在使用你的服务器上。您可能会检出各种数据库搜索解决方案,如Sphinx,这些解决方案将为您做所有索引,并提供一个简单的搜索API。狮身人面像例如允许您优先列,定义字符映射(ß->s,ä->a)等

+0

db是Sql Server 2000,Web服务在c#中。 – 2011-03-02 01:09:13

+0

狮身人面像看起来不错,但我看到GPL授权。商业许可证可用,但他们可能需要购买。至少现在,我想寻找一种无需向客户收取额外费用的方法。如果全部失败,我会考虑狮身人面像。谢谢 – 2011-03-02 01:26:11

+0

狮身人面像本身是一个独立的应用程序,所以更大的问题是,无论C#客户端库是否GPLed(显然是这样)。但只要你在你自己/公司的服务器上使用它,GPL就不会强迫你开源任何东西(AGPL会)。 – 2011-03-02 01:39:18

相关问题