J'utilise Lucene.Net 3.0.3 et j'ai du code de travail mais je n'arrive pas à comprendre comment ajouter un simple formateur.Créer un formateur de surbrillance simple pour Lucene.net 3.0.3
Public Function Lucene_Index_Search_Complete(term As String) As String
Dim sb As New StringBuilder()
Dim sw As New StringWriter(sb)
Dim writer As JsonWriter = New JsonTextWriter(sw)
Try
Dim d As Lucene.Net.Store.Directory = FSDirectory.Open(New DirectoryInfo(Server.MapPath("~") + "\\IndexedFiles_V33\\"))
Dim indexReader As IndexReader = indexReader.Open(d, True)
Dim indexSearch As Searcher = New IndexSearcher(indexReader)
Dim a As Analyzer = New StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30)
'IFormatter formatter = new SimpleHTMLFormatter("<b>", "</b>");
Dim HighlightFormatter As SimpleHTMLFormatter = New SimpleHTMLFormatter("<span style='background:yellow;'>", "</span>")
Dim FieldNames As String() = indexReader.GetFieldNames(indexReader.FieldOption.INDEXED_NO_TERMVECTOR).toArray
Dim parser As MultiFieldQueryParser = New MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_30, FieldNames, a)
Dim q As BooleanQuery = New BooleanQuery()
term = term.Trim
Dim phases As String() = Nothing
If term.contains(",") Then
phases = Split(term, ",")
For Each phase As String In phases
q.Add(parser.Parse(phase), Occur.SHOULD)
Next
Else
phases = Split(term, " ")
For Each phase As String In phases
q.Add(parser.Parse(phase), Occur.MUST)
Next
End If
Dim collector As TopScoreDocCollector = TopScoreDocCollector.create(1000, True)
indexSearch.Search(q, collector)
Dim hits As ScoreDoc() = collector.topDocs().scoreDocs
Dim GrantID As String = ""
Dim Title As String = ""
Dim Posted_Date As String = ""
Dim link As String = ""
Dim jsonData As JObject = Nothing
Dim purpose As String = ""
Dim Short_Description As String = ""
' Loop through the matching hits, retrieving the document
writer.WriteStartArray()
For i As Integer = 0 To hits.Length - 1
Try
If i >= 50 Then
Exit For
End If
Dim docId As Integer = hits(i).doc
Dim doc As Document = indexSearch.doc(docId)
Dim Score As String = hits(i).Score.tostring
GrantID = doc.get("GrantID")
link = doc.get("link")
jsonData = JObject.Parse(doc.get("JSON_Data"))
Title = jsonData("Funding Opportunity Title").ToString
Posted_Date = jsonData("Posted Date").ToString
purpose = jsonData("Funding Opportunity Purpose").ToString
writer.WriteStartObject()
writer.WritePropertyName("id")
writer.WriteValue((1 + i).ToString)
writer.WritePropertyName("Grant_ID")
writer.WriteValue(GrantID)
writer.WritePropertyName("text")
writer.WriteValue("<br/>" + Title + "<br/>" + purpose + "<br/><b>Score:</b> " + Score + "<br/>")
writer.WritePropertyName("Score")
writer.WriteValue(Score)
writer.WriteEndObject()
Catch ex As Exception
WriteErrorLog(ex.Message, link)
End Try
Next
writer.Close()
Return sb.ToString
Catch ex As Exception
Return ex.Message
End Try
End Function
Tout ce que je veux faire est d'envelopper le terme avec un fond jaune. Toute aide est appréciée parce que j'ai cherché la réponse et je pense qu'il me manque quelque chose. Je dois souligner les termes de recherche qui sont dans les champs JSON de possibilités de financement Objet et les possibilités de financement Titre
On dirait que le titre de votre question devrait être changé. 'Lucene.net 3.0.3' n'est pas utile pour les personnes essayant de trouver des informations sur l'ajout d'un formateur à Lucene. Je ne suis pas sûr si vous pouvez changer le titre/question rétroactivement si – mdiehl13
Je suis d'accord-je l'ai changé- Merci – user1314159
Vous devriez ajouter votre solution comme réponse, ainsi les gens savent que ceci est résolu. – NightOwl888