Индексируйте XML с помощью библиотеки индексирования текста Go bleve
Как я могу использовать библиотеку индексирования текста bleve, https://github.com/blevesearch/bleve, для индексации содержимого XML?
Я думал об использовании кода, подобного этому синтаксическому анализатору XML, в Go: https://github.com/dps/go-xml-parse, но как тогда передать то, что анализируется, Bleve для индексации?
Обновление: мой XML:
Мой XML выглядит следующим образом:
<page>
<title>Title here</title>
<image>image url here</title>
<text>A sentence of two about the topic</title>
<facts>
<fact>Fact 1</fact>
<fact>Fact 2</fact>
<fact>Fact 3</fact>
</facts>
</page>
1 ответ
Решение
Вы должны создать структуру, определяющую структуру вашего XML. Затем вы можете использовать стандартный пакет "encoding/xml" для демонтажа XML в структуру. И оттуда вы можете индексировать структуру с помощью Bleve как обычно.
http://play.golang.org/p/IZP4nrOotW
package main
import (
"encoding/xml"
"fmt"
)
type Page []struct {
Title string `xml:"title"`
Image string `xml:"image"`
Text string `xml:"text"`
Facts []struct {
Fact string `xml:"fact"`
} `xml:"facts"`
}
func main() {
xmlData := []byte(`<page>
<title>Title here</title>
<image>image url here</image>
<text>A sentence of two about the topic</text>
<facts>
<fact>Fact 1</fact>
<fact>Fact 2</fact>
<fact>Fact 3</fact>
</facts>
</page>`)
inputStruct := &Page{}
err := xml.Unmarshal(xmlData, inputStruct)
if nil != err {
fmt.Println("Error unmarshalling from XML.", err)
return
}
fmt.Printf("%+v\n", inputStruct)
}