Subsonic 亚音速搜索查询

Subsonic 亚音速搜索查询,subsonic,full-text-search,Subsonic,Full Text Search,嗯 今天我想学亚音速。很酷的东西 我正试图在我的网站上建立一些搜索功能,但我正在为如何在亚音速下实现这一点而苦苦挣扎 我有一个搜索字段,可以包含多个关键字。我想返回匹配所有关键字的结果。搜索的目标是单个文本列 到目前为止,我有以下内容(它运行但从不返回结果): 因此,只搜索最后一个关键字 有什么想法吗?第一个问题: return new SubSonic.Select().From(Visit.Schema) .InnerJoin(InfopathArchive.VisitIdC

今天我想学亚音速。很酷的东西

我正试图在我的网站上建立一些搜索功能,但我正在为如何在亚音速下实现这一点而苦苦挣扎

我有一个搜索字段,可以包含多个关键字。我想返回匹配所有关键字的结果。搜索的目标是单个文本列

到目前为止,我有以下内容(它运行但从不返回结果):

因此,只搜索最后一个关键字

有什么想法吗?

第一个问题:

return new SubSonic.Select().From(Visit.Schema)
        .InnerJoin(InfopathArchive.VisitIdColumn, Visit.VisitIdColumn)
        .Where(InfopathArchive.XmlDocColumn).Like("%" + keywords + "%")
        .ExecuteTypedList<Visit>();
返回新的亚音速.Select().From(访问.Schema)
.InnerJoin(InfopathArchive.VisitIdColumn,Visit.VisitIdColumn)
.Where(InfopathArchive.XmlDocColumn).Like(“%”+关键字+“%”)
.ExecuteTypedList();
第二个问题:

return new SubSonic.Select().From(Visit.Schema)
        .InnerJoin(InfopathArchive.VisitIdColumn, Visit.VisitIdColumn)
        .Where(InfopathArchive.XmlDocColumn).Like("%" + keywords + "%")
        .ExecuteTypedList<Visit>();
将查询中的单词列表传递给构建亚音速查询的函数,如下所示

SqlQuery query = DB.Select().From(Visit.Schema)
        .InnerJoin(InfopathArchive.VisitIdColumn, Visit.VisitIdColumn)
        .Where("1=1");

foreach(string wordInQuery in wordsInQueryList)
{
  query = query.And(InfopathArchive.XmlDocColumn).Like("%" + wordInQuery + "%")
}

return query.ExecuteTypedList<Visit>();
SqlQuery query=DB.Select().From(Visit.Schema)
.InnerJoin(InfopathArchive.VisitIdColumn,Visit.VisitIdColumn)
。其中(“1=1”);
foreach(wordsInQueryList中的字符串wordInQuery)
{
query=query.And(InfopathArchive.XmlDocColumn)。类似(“%”+wordInQuery+“%”)
}
返回query.ExecuteTypedList();

显然,这是未经测试的,但它应该为您指明正确的方向。

您可以按照Adam的建议执行,或者使用2.2,您可以简单地使用“Contains()”而不是Like(“%…%”)。我们还支持StartWith和EndsWith():)

同时,您可以在这里Rob-亚音速3什么时候推出?我想推动我们的DAL使用亚音速,LINQ的增加将帮助我提出一个非常有力的论点。非常好。谢谢你的帮助。为什么表演这么好?我以为这样的查询会很慢。我想这是一个不知道答案的问题;)这是以前亚音速版本中的错误吗?我使用的是2.1,目前还没有升级的选择。
return new SubSonic.Select().From(Visit.Schema)
        .InnerJoin(InfopathArchive.VisitIdColumn, Visit.VisitIdColumn)
        .Where(InfopathArchive.XmlDocColumn).Like("%" + keywords + "%")
        .ExecuteTypedList<Visit>();
SqlQuery query = DB.Select().From(Visit.Schema)
        .InnerJoin(InfopathArchive.VisitIdColumn, Visit.VisitIdColumn)
        .Where("1=1");

foreach(string wordInQuery in wordsInQueryList)
{
  query = query.And(InfopathArchive.XmlDocColumn).Like("%" + wordInQuery + "%")
}

return query.ExecuteTypedList<Visit>();