0

我的查询返回搜索到的数据,但搜索不正确

在我的表值是

 ------------------------
       Help
 ------------------------
1    help for abcd
2    help needed before

我的 Hql 查询如下

select help from Help  help where lower(help.Subject) like lower ('%'" + searchterm + "'%')

当我搜索“for”时,它会返回

------------------------
       Help
------------------------
1    help for abcd
2    help needed before

我只需要返回第一个

1. help for abcd

即:我只需要搜索以搜索词开头的词

任何人请帮助...

4

2 回答 2

1

这听起来像一个词边界问题。Here Is A similar question回答

在 MySQL 中搜索“全词匹配”

抱歉,我不知道为什么 Android 想把我的话都大写。

于 2012-08-10T22:30:12.270 回答
0

您好 frnds 我得到了完美的解决方案

起初使用查询

 select help from Help  help

然后将帮助列表存储在

 var ListofHelps

然后

   foreach (var item in ListofHelps)
        {

          if (!string.IsNullOrEmpty(searchterm))
          {
           var splitsearchterm = Regex.Split(searchterm, @"\s");//split search term

                var splittedsubjects = Regex.Split(item.Subject.ToUpper(), @"\s"); //Subject is to be searched
                var found = splittedsubjects.Where(x => x.StartsWith(searchterm.ToUpper()));
                int datacount = found.Count();
                if (splitsearchterm.Count() > 1 && item.Subject.ToUpper().Contains(searchterm.ToUpper()))
                {
                    datacount = 1;

                }
                if (datacount > 0)
                {
                    Helplist.Add(new HelpViewModel //Helplist is an item in HelpViewModel ie public IEnumerable<MultiSelectList> Taglists { get; set; }
                    {
                        Subject = item.Subject,
                        HelpId = Convert.ToInt32(item.Id),
                        Content = item.Content

                    });
                }

            }
            else
            {

                Helplist.Add(new HelpViewModel
                {
                    Subject = item.Subject,
                    HelpId = Convert.ToInt32(item.Id),
                    Content = item.Content

                });

            }


        }

它对我有用。有没有更好的方法来做到这一点

于 2012-08-13T05:01:27.167 回答