首页 新闻 会员 周边 捐助

请教一个类似“智能补全”的搜索功能

0
悬赏园豆:40 [已解决问题] 解决于 2013-08-15 11:23

最近在做ASP.NET 网页 搜索功能

大致要实现的效果是:

我有一条数据是“123456789”

我在搜素框内输入“987”或则“135”

都能搜索到这条数据

就类似于“百度那种搜索方式”

这个功能怎么实现请各位大神 指点迷津!

JasonGu0的主页 JasonGu0 | 初学一级 | 园豆:4
提问于:2013-08-09 17:29
< >
分享
最佳答案
0

可以使用ajax.net组件,方法是可以使用它的AutoComplete 控件,原理:先在数据库新建一张表用于保存搜索的索引,再把内容获取出来,关于AutoComplete用法,可以参考http://blog.csdn.net/yjjm1990/article/details/8833645;希望可以帮到你~~

收获园豆:10
Elaine00 | 菜鸟二级 |园豆:294 | 2013-08-11 22:06

我用AutoComplete 貌似还是不行  报错了  不知道是不是我遗漏了什么地方 代码贴出来 让你看看 有没有错?

源代码:

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajx" %>

<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">

    </asp:ScriptManager>
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <ajx:AutoCompleteExtender ID="auto1" runat="server" ServicePath="myservice.asmx"
            ServiceMethod="ss" Enabled="true" MinimumPrefixLength="2" CompletionSetCount="10"
            TargetControlID="TextBox1">
        </ajx:AutoCompleteExtender>
    </div>
    </form>
</body>

这是webservice 的代码如下:

namespace WebApplication5
{
    /// <summary>
    /// myservice 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
    [System.Web.Script.Services.ScriptService]
    public class myservice : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
        [WebMethod]
        public string[] ss()
        {
            string[] s = { "a", "ab", "abc", "abcd", "cadf", };
            return s;
        }
    }

}

 

JasonGu0 | 园豆:4 (初学一级) | 2013-08-14 10:38

这是报的错误

JasonGu0 | 园豆:4 (初学一级) | 2013-08-14 10:46

@恒_心: 研究了下,记得上次我遇到这样的问题,出在web.config文件里面,看看里面有没有添加对该组价的声明;

建议:如果数据不多的话,也可以用全文索引,搜索起来的速度不会比这种方式慢,ajax.net这个只是用于在搜索的时候进行关键词提示,更加正式的方式就是用Lucene.net和盘古分词,学起来需要点点时间~~看看你的需求吧!

注:如果ajax.net这个组件还是不能正确使用,我看看找个时间给你发个实例,不过能够自己研究起来还是比较好的~~加油吧!

Elaine00 | 园豆:294 (菜鸟二级) | 2013-08-14 12:58

@恒_心: 解决了吗?

Elaine00 | 园豆:294 (菜鸟二级) | 2013-08-15 12:03
其他回答(4)
0

AutoComplate,你去看看这个jquery插件~很简单的实现~

收获园豆:10
幻天芒 | 园豆:37207 (高人七级) | 2013-08-09 17:32

你这个就是智能提示!是吧?

我想要搜索结果,,,,到目前还不知道怎么做? 唉》。。。。

支持(0) 反对(0) JasonGu0 | 园豆:4 (初学一级) | 2013-08-10 09:39

@恒_心: 额...那就要全文检索了,这个当前比较成熟的就是Luence.Net(搭配盘古分词【博客园找找看就是用的这一套】)了,

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2013-08-10 19:15
0

建议使用Lucene.net,推荐一篇博文:Lucene.Net 入门---介绍篇

收获园豆:10
dudu | 园豆:30778 (高人七级) | 2013-08-09 18:09
0

Lucene.net + JQuery.AutoComplate

收获园豆:10
dotnetgeek | 园豆:482 (菜鸟二级) | 2013-08-13 17:26

能给点 步骤吗?谢谢

支持(0) 反对(0) JasonGu0 | 园豆:4 (初学一级) | 2013-08-14 11:34
0

我把搜索的关键词拆分了 ,把拆分的字符做为单个字符去搜索!

JasonGu0 | 园豆:4 (初学一级) | 2013-08-15 11:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册