大家好,我是一名新手程序员,我正在尝试在 VB 中构建一个以 MySQL 作为后端的搜索引擎。数据库不是那么大,只是存储了一些概念,而是以图像、文本、PDF 的形式。
现在我已经设法连接到我的数据库,但我不知道要编写什么代码来获得像 Google 这样的搜索结果。例如,如果我搜索选择文本格式,我应该得到段落中的结果,如果它的图像那么结果应该是存储在我的数据库中的图像。谁能帮我写代码,因为我不知道从哪里开始
大家好,我是一名新手程序员,我正在尝试在 VB 中构建一个以 MySQL 作为后端的搜索引擎。数据库不是那么大,只是存储了一些概念,而是以图像、文本、PDF 的形式。
现在我已经设法连接到我的数据库,但我不知道要编写什么代码来获得像 Google 这样的搜索结果。例如,如果我搜索选择文本格式,我应该得到段落中的结果,如果它的图像那么结果应该是存储在我的数据库中的图像。谁能帮我写代码,因为我不知道从哪里开始
这是我几年前所做的:
Imports System.Linq
Imports System.Linq.Expressions
Imports System.Collections.Generic
Imports System.Runtime.CompilerServices
Module PredicateBuilder
Sub New()
End Sub
Public Function [True](Of T)() As Expression(Of Func(Of T, Boolean))
Return Function(f) True
End Function
Public Function [False](Of T)() As Expression(Of Func(Of T, Boolean))
Return Function(f) False
End Function
<System.Runtime.CompilerServices.Extension()>
Public Function [Or](Of T)(expr1 As Expression(Of Func(Of T, Boolean)), expr2 As Expression(Of Func(Of T, Boolean))) As Expression(Of Func(Of T, Boolean))
Dim invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast(Of Expression)())
Return Expression.Lambda(Of Func(Of T, Boolean))(Expression.[OrElse](expr1.Body, invokedExpr), expr1.Parameters)
End Function
<System.Runtime.CompilerServices.Extension()>
Public Function [And](Of T)(expr1 As Expression(Of Func(Of T, Boolean)), expr2 As Expression(Of Func(Of T, Boolean))) As Expression(Of Func(Of T, Boolean))
Dim invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast(Of Expression)())
Return Expression.Lambda(Of Func(Of T, Boolean))(Expression.[AndAlso](expr1.Body, invokedExpr), expr1.Parameters)
End Function
End Module
我就是这样使用这个类的:
'POST: /Search
<HttpPost()>
Function contactSearch(ByVal search As String, ByVal opportunite As opportunite) As ViewResult
Dim chaine As String = Request("searchString") 'obtient la chaine introduite par l'user au clavier
Dim tabMot() = chaine.Split(New Char() {" "c}) 'transforme la chaine en tableau de mots
Dim distance As Integer
distance = Request("dist") 'obtient la valeur introduite par l'user dans la CBbox
Dim flag As String = "ok" 'sert à dire à la vue qu'on est passé par ici, et qu'il peut tenter d'afficher les résultats de la recherche
Dim n As Integer = 0 'sert à compter le nombre de contacts récupérés. On introduira cette valeur dans la taille du tableau qui sera créé
Dim i As Integer = 0 'sert d'indice dans le tableau dans lequel sont stockées les coordonnées
'Tout ce bloc sert à construire une liste de contacts répondant aux critères
Dim predicate As Expression(Of Func(Of contact, Boolean))
predicate = PredicateBuilder.False(Of contact)()
For Each mot In tabMot
Dim tmp = mot
predicate = predicate.And(Function(m) m.titre.Contains(tmp))
predicate = predicate.Or(Function(m) m.departement.Contains(tmp))
predicate = predicate.Or(Function(m) m.qualifications.Contains(tmp))
predicate = predicate.Or(Function(m) m.langue1.Contains(tmp))
predicate = predicate.Or(Function(m) m.langue2.Contains(tmp))
predicate = predicate.Or(Function(m) m.langue3.Contains(tmp))
predicate = predicate.Or(Function(m) m.langue4.Contains(tmp))
predicate = predicate.Or(Function(m) m.langue5.Contains(tmp))
Next
Dim contacts = db.contact.AsExpandable().Where(predicate).ToList()
希望这可以帮助。(我正在使用 Linq 到实体)