当前位置:编程学习 > C#/ASP.NET >>

MVC linq 相似度 匹配 排序

数据库数据:
字段  Title
     中国
      国中
      国中国
      国  
需求:在搜索框里面输入:国
         显示出来的结果是:
                   1. 国
                   2.国中
                   3.国中国
在搜索框里面输入:中
         显示出来的结果是:
                   1.中国
                   2.国中
                   3.国中国

请问下这个需求怎么实现,也就是说匹配度由高到低匹配 排序
                                                   --------------------编程问答-------------------- 先去百度下全文索引 --------------------编程问答-------------------- LINQ是独立于数据库的,数据库实现者决定怎么解析LINQ的逻辑函数展开。
LINQ To SQL和LINQ To Entity的SQL Server不支持使用全文索引。
你可以自己编写一个SQl Server函数然后加入LINQ To SQL的数据库模型。 --------------------编程问答--------------------
引用 2 楼 qiujialongjjj 的回复:
LINQ是独立于数据库的,数据库实现者决定怎么解析LINQ的逻辑函数展开。
LINQ To SQL和LINQ To Entity的SQL Server不支持使用全文索引。
你可以自己编写一个SQl Server函数然后加入LINQ To SQL的数据库模型。

不是全文索引,是单独一个字段的搜索  例如字段Title --------------------编程问答-------------------- 你的需求可以不可以这么来理解:
先匹配 like '%key' or like 'key%'
最后匹配 like '%key%'

如果是这样就好办了:

var query= db.TableA.Where(t=>t.Title.StartWith("中")||t.Title.EndWith(“中”))
           .Union(db.TableA.Where(t=>t.Title.Contains("中")));
--------------------编程问答-------------------- update:

var query=db.TableA.Where(t=>t.Title==("中"))
            .Union(db.TableA.Where(t=>t.Title.StartWith("中")||t.Title.EndWith("中")))
            .Union(db.TableA.Where(t=>t.Title.Contains("中")));
--------------------编程问答-------------------- http://bbs.csdn.net/topics/360200664 --------------------编程问答--------------------
引用 3 楼 xiaomou_mou 的回复:
Quote: 引用 2 楼 qiujialongjjj 的回复:

LINQ是独立于数据库的,数据库实现者决定怎么解析LINQ的逻辑函数展开。
LINQ To SQL和LINQ To Entity的SQL Server不支持使用全文索引。
你可以自己编写一个SQl Server函数然后加入LINQ To SQL的数据库模型。

不是全文索引,是单独一个字段的搜索  例如字段Title


开源社区有个lucene.NET可以实现 --------------------编程问答--------------------
引用
数据库数据:
字段  Title
     中国
      国中
      国中国
      国  
需求:在搜索框里面输入:国
         显示出来的结果是:
                   1. 国
                   2.国中
                   3.国中国
在搜索框里面输入:中
         显示出来的结果是:
                   1.中国
                   2.国中
                   3.国中国

请问下这个需求怎么实现,也就是说匹配度由高到低匹配 排序

你这里指的匹配度是由哪些组成的?比如搜索“中”得时候,“中国”和“国中”,怎么判断他们的匹配度高低?给出具体的规则。 --------------------编程问答--------------------
引用 4 楼 q107770540 的回复:
你的需求可以不可以这么来理解:
先匹配 like '%key' or like 'key%'
最后匹配 like '%key%'

如果是这样就好办了:

var query= db.TableA.Where(t=>t.Title.StartWith("中")||t.Title.EndWith(“中”))
           .Union(db.TableA.Where(t=>t.Title.Contains("中")));

嗯  这个不错 --------------------编程问答-------------------- 盘古分词最准确
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,