VB中的搜索引擎

时间:2013-09-29 16:08:22

标签: vb.net

大家好我是新手程序员我正在尝试用VB构建一个搜索引擎,MySQL作为后端。数据库并不是那么大,只是以图像,文本,PDF的形式存储了一些概念。

现在我已设法连接到我的数据库,但我不知道要编写什么代码来获取Google等搜索结果。 对于例如如果我搜索选择文本格式我应该得到段落中的结果,如果它的图像然后结果应该是存储在我的数据库中的图像。任何人都可以帮助我使用代码,因为我不知道从哪里开始

1 个答案:

答案 0 :(得分:-1)

这是我几年前所做的:

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实体)