2013-02-15 47 views
1

许多网站,特别是零售网站允许您按价格按照“相关性”进行排序。我将根据您搜索的单词数量,以及与数据库匹配的单词数量来设想这种方式。使用Linq计算实体框架中的匹配词汇

例如,如果我的关系数据库有一个搜索词表和一个特定的产品,3个词是表,网球,俱乐部,我在网站上搜索乒乓球大厅,我会有66%的准确性为2的3匹配。

我需要这个功能,但我使用EF并且不知道从哪里开始。所以,字面意思是我在%('准确性分数'或相关性)之后。

我很高兴地显示我的代码,但说实话我得到的感觉扔在页面上的70行代码只是为了证明我试过的东西不会受益任何人,所以如果你想代码,我会展示它,如果没有,任何人都可以给我任何指示或甚至短语给谷歌?

+0

我不确定,但是,您可能有兴趣查看[Lucene](http://blogs.apache.org/lucenenet/)。 – 2013-02-15 19:29:06

回答

0

假设这是一个SQL Server项目,您可以从检索全文搜索/全文目录开始。将这些与CONTAINSTABLEFREETEXTTABLE搜索结合使用将返回一个分数,该分数是衡量相对相关性而非百分比的度量。从EF的角度来看,我最终发现最简单的解决方案是调用存储过程,以便在EF之外获得排名结果(分数和ID),然后通过ID从上下文加载对象。我写了一个半复杂的存储过程,允许我根据包含字段的相关性来衡量我的结果。我在这里发布了一些关于我的问题:Code-First Entity Framework w/ Stored Procedure returning results from complex Full-text Searches

+0

hmmmm。我使用EF越多,我越感觉到它的局限性。是的,拥有地图很好,这是值得的重量,但在其他地方非常有限。我想这就是为什么我们不应该仅仅因为它易于安装等而使用它。谢谢你的好回答,虽然在这种情况下,我在SQL Express上! (抱歉没有明确说明) – Dave 2013-02-19 08:48:01