用例
当用户访问我的网站时,他们会遇到一个类似于 SO 的搜索框。他们可以使用计划文本搜索结果。“.net questions”、“closed questions”、“.net and java”等。搜索的功能与 SO 稍有不同,因为它将尽可能多地尝试数据库的架构而不是直接全文搜索。因此,“.net questions”只会搜索 .net 问题,而不是 .net 答案(可能不适用于 SO 案例,这里只是一个示例),“closed questions”将返回已关闭的问题,“.net and java” questions 将返回与 .net 和 java 相关的问题,仅此而已。
问题
我对这些词不太熟悉,但我基本上想为 SQL 驱动的搜索做一个关键字。我知道数据库的架构,我也可以对数据库进行数据挖掘。在我尝试实施之前,我想知道那里已经存在的任何当前方法。我想这个问题是针对所述问题的好的设计。
建议的
到目前为止,我提出的解决方案看起来像这样
- 清理输入。只需删除任何特殊字符
- 将输入解析为数据块。将“c# java”的输入分解为 c# 和 java 还将“'c#java' questions”等特殊情况处理为“c#java”和“questions”。
- 从输入中构建一棵树
- 将数据绑定到元数据中。因此,转换诸如封闭问题之类的东西并将其与表格的封闭列相关联。
- 将树转换为 sql 查询。
想法/建议/链接?