这是一个非常广泛的问题,但我希望能够推动正确的方向(技术和方法)。
好的,我有一个iphone应用程序(我正在开发),它通过http请求与Web服务(c#)一起使用。 Web服务连接到底层数据库,根据请求提取必要的数据并将其反馈给应用程序。
现在,我需要在应用程序中实现一个搜索系统。用户搜索一些单词,我需要提供最相关的结果。必须在数据库中的不同表上执行搜索。可以在多个列中搜索每个表。例如,在搜索人员表时,我需要搜索名字,姓氏,公司和其他字段。其他表格还有其他重要的列。
我有很多问题,我甚至不知道从哪里开始。
如何使我的SQL查询进行搜索,但仍然足够快。我是否需要以某种方式制作一些带有索引内容的额外表格? 我应该如何在结果中添加相关因子,以便最终只过滤最相关的结果?例如,如果用户搜索史密斯,可能会有一个名为史密斯甚至是公司的人。它们应该在描述中可以包含史密斯的任何其他内容之前显示。
我知道这个问题有点含糊不清,但如果有人愿意,我可以解释一下。
谢谢
答案 0 :(得分:2)
这取决于您在服务器上使用的语言/ rdbms。您可以查看各种数据库搜索解决方案,例如Sphinx,它将为您完成所有索引并提供简单的搜索API。例如,Sphinx允许您确定列的优先级,定义字符映射(ß->s
,ä->a
)等。
答案 1 :(得分:1)
最后我决定使用Lucene。这是一个很棒的技术,即使我在开始时有一些疑问,在阅读了名为“Lucene in Action”的书的3/4后,我很清楚它拥有我需要的一切(以及更多)。
我知道它不是一个功能齐全的搜索系统(需要所有元素),而只是一个处理搜索系统核心的库。将它与我的应用程序/ webservice /数据库集成需要一些工作。我会告诉你它是怎么回事:))
感谢您的投入!