gpt4 book ai didi

linq - LINQ 中的完整搜索测试(自定义过滤器查询)

转载 作者:行者123 更新时间:2023-12-04 07:10:39 25 4
gpt4 key购买 nike

我有一个表,其中包含餐厅名称列表和指向另一个包含美食类型的表的链接。

我想在我的网页上提供一个搜索框,在输入时,会在数据库中搜索每个单词并返回结果。我正在寻找一种不涉及设置 sql 全文搜索的解决方案,因为我希望能够使用 Linq to SQL 进行测试。

从我的旧代码中,我有一个函数,它创建一个给定输入文本的查询过滤器,并根据它返回所有结果。

Private Function SetupQuery(ByVal searchText As String) As String
Dim searchFields As New List(Of String)

searchFields.Add("Name")
searchFields.Add("Postcode")
searchFields.Add("Cuisine")

Dim firstCol As Boolean = True

Dim a() As String
Dim j As Integer
a = searchText.Trim.Split(" ")

Dim filter As String = ""

Dim compareString As String
For Each col As String In searchFields
For j = 0 To a.GetUpperBound(0)
compareString = a(j).ToUpper()
compareString = compareString.Trim()

If firstCol Then
filter = filter & col & " LIKE '" & compareString & "%' "
firstCol = False
Else
filter = filter & " or " & col & " LIKE '" & compareString & "%' "
End If
Next
Next

Return filter
End Function

这对搜索字段进行了硬编码,然后遍历搜索文本中的每个单词和每个单词以构建 OR LIKE 过滤器。

我确定我可以在我的 LINQ 代码中使用它,但它似乎不是一个优雅的解决方案,特别是因为列是硬编码的,并且没有使用 LINQ 使用它们的方式。

任何人都可以推荐一种更好的方法来做到这一点,或者在什么方向上有一些提示吗?

谢谢

最佳答案

您可以使用全文搜索并仍然使用 LINQ to SQL。您可以创建一个存储过程并让 LINQ 调用它。除了查找完全匹配项之外,您还可以返回:

  • 简单搜索特定单词或短语
  • 同义词搜索同义词形式——在 IE 上的搜索可能会返回 Internet Explorer 和 IE(基于同义词的扩展搜索)的点击;对孟买的搜索也可能返回对孟买的点击(基于同义词库的替换搜索)
  • 搜索将返回一个词的所有不同语言形式(称为代) 搜索银行将返回银行、银行、银行、银行和银行等的命中(搜索词银行的所有变格和/或变位)
  • 重音不敏感搜索 - 对咖啡馆的搜索将返回对咖啡馆和咖啡馆的点击

  • http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx

    http://www.simple-talk.com/sql/learn-sql-server/sql-server-full-text-search-language-features/

    关于linq - LINQ 中的完整搜索测试(自定义过滤器查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/420299/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com