假设我有一个名为DB的MySQL数据库和一个名为ContactInfo的表。下面是它的结构和一些示例数据(仅一个项目):从数据库中进行全文搜索
表----的ContactInfo:
----------------------------------------------------------- name fullname phone ----------------------------------------------------------- NASA National Aeronautics and Space Administration 00000 -----------------------------------------------------------
现在我想搜索的表下的数据“ ContactInfo“使用以下方式:
1)无论我输入”NASA“或”国家航空航天局“或电话号码,都应该将右边的行我。 2)当我进入“国家航空局”或“国家航天局”或“美国航空航天局”或“美国航空航天局”时,它们在数据库中并不完全匹配,但第一行应该是由于第一行中的内容与请求的字符串相关,因此返回给我。
方式二可以被看作是隐蔽的搜索。
我已经考虑过使用诸如“Hpyer estraier”和“Lucene”之类的“全部上下文搜索”。不过,我发现我的要求不同或多或少。
使用“Hyper estraier”或“Lucene”时,首先根据解析的纯文本创建索引。然后开始搜索。
那么这是否意味着我应该将数据库中的数据更改为多个纯文本文件(表中的每个记录为单个文件),然后根据这些文件构建索引?
顺便说一句,我刚刚发现MySQL支持全文搜索,但是我们必须处理一些中文字符,但似乎mysql确实支持中文字符全文搜索。
那么,任何人都可以给我一个建议?
似乎sphinx只支持php,但我们的应用程序是在java.and下构建的,而我发现另一个sphinx-4,有什么不同? – hguser 2010-09-09 11:06:09
Java不需要在sphinx支持中构建。您可以使用SphinxSE'SE =存储引擎http://sphinxsearch.com/docs/current.html#sphinxse-using或SphinxQL http://sphinxsearch.com/docs/current.html#sphinxql这是一个守护程序一个真正的MySQL服务器,让我们来执行查询。两种方法都要求sphinx守护进程启动并运行。 SphinxQL更容易设置,因为SphinxSE要求您使用sphinx支持重新编译MySQL,但SphinxSE更方便查询,因为您可以从sphinx搜索中查询product_id,并且可以一步直接加入产品表。 – 2010-09-09 14:33:25