英文:
Index XML with the Go bleve text indexing library
问题
你可以使用bleve文本索引库(https://github.com/blevesearch/bleve)来索引XML内容。你可以考虑使用类似于Go语言中的这个XML解析器(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>
英文:
How can I use the bleve text-indexing library, https://github.com/blevesearch/bleve, to index XML content?
I thought about using code like this XML parser in Go: https://github.com/dps/go-xml-parse, but then how do I pass what is parsed to Bleve to be indexed?
Update: My XML:
My XML looks like the following:
<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
得分: 2
你可以创建一个定义XML结构的结构体。然后,你可以使用标准的"encoding/xml"包将XML解组为该结构体。然后,你可以像正常情况下一样使用Bleve对结构体进行索引。
以下是代码的中文翻译:
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)
}
希望对你有帮助!
英文:
You would create a struct defining the structure of your XML. You can then use the standard "encoding/xml" package to unmarshal XML into the struct. And from there you can index the struct with Bleve as normal.
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)
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论