【问题标题】:Searching string with sql contains and building "contains" expression with ASP.Net使用 sql contains 搜索字符串并使用 ASP.Net 构建“包含”表达式
【发布时间】:2013-09-07 12:08:19
【问题描述】:

您好,我有一个包含约 180K 记录的表,我需要在此表中搜索字符串。

例如,如果用户搜索“巴黎餐厅”这样的内容 我需要创建这样的表达式

SELECT * FROM ListOfStrings
WHERE CONTAINS(Title, ' "Paris Restaurants" OR (Paris OR Restaurants) ')

但可能有一个或多个术语。所以我需要动态创建包含表达式。

我用谷歌搜索,但找不到动态创建表达式的信息。 任何想法将不胜感激。

【问题讨论】:

  • 在这种情况下你不应该使用FREETEXT吗?
  • 我用过,但是它返回了太多不相关的结果。
  • 您需要在sql或客户端创建CONTAINS表达式吗?
  • 我认为它应该在代码隐藏上,而不是在 sql 上。

标签: asp.net sql-server full-text-search


【解决方案1】:

您可以使用接受搜索词的函数进行构建,然后将其拆分和连接以提供所需的 Contains 参数。

public string ContainsBuilder(string searchterm)
{
    var sb = new StringBuilder();
    sb.Append('"');
    sb.Append(searchterm);
    sb.Append('"');        
    sb.Append(" OR (");
    sb.Append(String.Join(" OR ",searchterm.Split(' ')));
    sb.Append(")");
    return sb.ToString();
}

如果你用paris restaurants 调用这个方法,它会返回"paris restaurants" OR (paris OR restaurants)

【讨论】:

  • 没想到这么简单。不过值得一试,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 2012-05-07
  • 1970-01-01
  • 2019-10-17
相关资源
最近更新 更多