-1

我必须想出一个搜索的设计。搜索到的数据不是文档类型。要搜索的数据实体是医疗程序,基本上由一个/两个/三个单词组成。这些词是由管理员预先定义的。例如:血管成形术、鼻整形术、肾上腺手术、ACTH 模拟测试等。

最终用户从选择中选择过程名称,并且用户的选择存储在 db 中。最终用户是指正在创建其个人资料的用户。

我用用户 id 为单独的表中的关键字编制索引。所以对于鼻整形术,如果三个用户添加了它,我将在索引表中有三个条目。对于其他程序也是如此。

程序名称 | 用户名|
-------------------------
隆鼻 1
隆鼻 2
鼻整形术 3
肾上腺手术 2
肾上腺手术 3
血管成形术 1

等等 。

当某些用户尝试搜索程序(将他引导到配置文件)时会出现问题。他可能将“肾上腺手术”写为“肾上腺手术”或“血管成形术”写为“血管成形术手术”或“ACTH 模拟测试”写为“模拟”测试ACTH'。有时程序也可以有同义词/首字母缩写词。

我理解停用词的概念。我可以在它们下定义“手术”和“测试”等常用词。去除这些停用词的索引表并去除搜索查询。

如何实现同义词?还有没有更好的方法来实现这样的搜索?我不认为我可以查看 lucene 或 solr,因为它们是全文搜索引擎。

4

2 回答 2

2

听起来你需要某种全文搜索解决方案,看看solr或少一点重量级的sphinx

对于单独的模糊匹配,您也可以尝试使用数据库系统的内置全文索引,mysqlprogresql都有一个。Postgres 也支持同义词词典。

于 2012-08-31T12:10:59.177 回答
0
Try using using like clause in your query
 SELECT * from TABLENAME WHERE Procedure Name like "%Surgery Adrenal%";
于 2012-08-31T12:05:57.783 回答