jde*_*tor 1 database sql-server search keyword keyword-search
用例
当用户访问我的网站时,他们会遇到一个类似于 SO 的搜索框。他们可以使用计划文本搜索结果。“.net 问题”、“封闭式问题”、“.net 和 java”等。搜索的功能与 SO 略有不同,因为它将尽可能多地尝试数据库的架构,而不是直接全文搜索。所以“.net 问题”只会搜索 .net 问题而不是 .net 答案(可能不适用于 SO 案例,这里只是一个例子),“封闭问题”将返回封闭的问题,“.net 和 java”问题将返回与 .net 和 java 相关的问题,仅此而已。
问题
我对这些词不太熟悉,但我基本上想为 SQL 驱动的搜索做一个关键字。我知道数据库的架构,我也可以对数据库进行数据挖掘。我想知道在我尝试实施之前已经存在的任何当前方法。我想这个问题是针对所述问题的良好设计。
建议的
到目前为止,我提出的解决方案看起来像这样
想法/建议/链接?
我经营一家带有“单一搜索”的数字音乐商店,该商店根据关键字的出现次数和产品出现的模式对关键字进行加权,例如。具有不同的列,如“艺术家”、“标题”或“出版商”。
产品也与专辑和播放列表有关,但为了更简单的说明,我仅详细说明产品关键字的索引和查询。
Keywords table - 每个可能被搜索的单词的加权表(因此,它在某处被引用),每个记录的数据如下:
ProductKeywords 表 - 任何产品字段(或列)引用的每个关键字的加权表,每条记录具有以下数据:
权重值表示单词出现的频率。匹配权重较低的关键字“更独特”,更有可能成为搜索对象。通过这种方式,经常出现的词会自动“降低权重”,例如。“the”、“a”或“I”。但是,最好在索引之前去除那些常见单词的原子出现。
我使用整数进行加权,但使用十进制值将提供更多功能,可能排序稍慢。
每当更新任何产品字段时,例如。艺术家或标题(这种情况不经常发生),数据库触发器在事务中像这样重新索引产品的关键字:
ProductKeywords表中的产品相关以进行直接匹配。ProductKeyword权重调整中减去 1 或 2 。| 归档时间: |
|
| 查看次数: |
2763 次 |
| 最近记录: |