Add link operator to search
continuous-integration/drone/push Build is passing Details

single-block-api
Peter Stuifzand 3 years ago
parent 39dd45b65d
commit 47d504903d

@ -954,6 +954,10 @@ func createSearchIndex(dataDir, indexName string) (bleve.Index, error) {
titleFieldMapping.Store = true titleFieldMapping.Store = true
documentMapping.AddFieldMappingsAt("title", titleFieldMapping) documentMapping.AddFieldMappingsAt("title", titleFieldMapping)
linkFieldMapping := bleve.NewTextFieldMapping()
linkFieldMapping.Store = true
documentMapping.AddFieldMappingsAt("link", linkFieldMapping)
indexMapping.AddDocumentMapping("block", documentMapping) indexMapping.AddDocumentMapping("block", documentMapping)
searchIndex, err := bleve.New(indexDir, indexMapping) searchIndex, err := bleve.New(indexDir, indexMapping)

@ -199,6 +199,8 @@ func (s *searchHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
q := bleve.NewQueryStringQuery(r.URL.Query().Get("q")) q := bleve.NewQueryStringQuery(r.URL.Query().Get("q"))
sr := bleve.NewSearchRequest(q) sr := bleve.NewSearchRequest(q)
sr.IncludeLocations = false
sr.Size = 25
sr.Fields = []string{"page", "title", "text"} sr.Fields = []string{"page", "title", "text"}
sr.Highlight = bleve.NewHighlightWithStyle("html") sr.Highlight = bleve.NewHighlightWithStyle("html")
sr.Highlight.AddField("text") sr.Highlight.AddField("text")
@ -219,6 +221,7 @@ type pageBlock struct {
Title string `json:"title"` Title string `json:"title"`
Page string `json:"page"` Page string `json:"page"`
Text string `json:"text"` Text string `json:"text"`
Link string `json:"link"`
} }
func (p pageBlock) Type() string { func (p pageBlock) Type() string {
@ -239,12 +242,30 @@ func createSearchObjects(rootBlockID string) ([]pageBlock, error) {
current := queue[0] current := queue[0]
queue = queue[1:] queue = queue[1:]
pageBlocks = append(pageBlocks, pageBlock{ links, err := ParseLinks(current, blocks.Texts[current])
ID: current, if err != nil {
Title: blocks.Texts[blocks.PageID], continue
Page: blocks.PageID, }
Text: blocks.Texts[current],
}) if len(links) == 0 {
pageBlocks = append(pageBlocks, pageBlock{
ID: current,
Title: blocks.Texts[blocks.PageID],
Page: blocks.PageID,
Text: blocks.Texts[current],
Link: "",
})
} else {
for _, link := range links {
pageBlocks = append(pageBlocks, pageBlock{
ID: current,
Title: blocks.Texts[blocks.PageID],
Page: blocks.PageID,
Text: blocks.Texts[current],
Link: link.Name,
})
}
}
queue = append(queue, blocks.Children[current]...) queue = append(queue, blocks.Children[current]...)
} }

Loading…
Cancel
Save