【问题标题】:How to implement a search system in a database for an iphone application如何在 iphone 应用程序的数据库中实现搜索系统
【发布时间】:2011-03-02 00:41:29
【问题描述】:

这是一个相当宽泛的问题,但我希望能推动正确的方向(技术和方法)。

好的,我有一个 iphone 应用程序(我正在开发),它通过 http 请求与 Web 服务 (c#) 一起工作。 Web 服务连接到底层数据库,根据请求提取必要的数据并将其反馈给应用程序。

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

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

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

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

谢谢

【问题讨论】:

  • 我很乐意接受一个为我指明正确方向的答案

标签: iphone sql database search


【解决方案1】:

这取决于您在服务器上使用的语言/rdbms。您可以查看各种数据库搜索解决方案,例如 Sphinx,它将为您完成所有索引并提供简单的搜索 API。例如,Sphinx 允许您确定列的优先级、定义字符映射(ß->sä->a)等。

【讨论】:

  • 数据库是Sql Server 2000,web服务是c#。
  • Sphinx 看起来不错,但我看到它是在 GPL 下获得许可的。商业许可证可用,但可能需要购买。至少现在,我想寻找一种对客户没有任何额外费用的方法。如果一切都失败了,我会考虑狮身人面像。谢谢
  • Sphinx 本身是一个独立的应用程序,所以更大的问题是,c# 客户端库是否是 GPL 的(显然是)。但只要你只是在你自己/公司的服务器上使用它,GPL 就不会强迫你开源任何东西(AGPL 会)。
【解决方案2】:

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

我知道它不是一个功能齐全的搜索系统(包含所有需要的元素),而只是一个处理搜索系统核心的库。需要做一些工作才能将它与我的应用程序/webservice/数据库集成。我会告诉你进展如何:)

感谢您的意见!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多