You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The problem you're encountering is because the query you're executing (the query string) doesn't explicitly mention a field, which means it defaults to searching in the general field (_all). As a result, the analyzer applied to the query string is the default analyzer, which you've defined as "en." To resolve this problem, please include the "Body" field in your query string. This will utilize the custom analyzer you've configured for the "Body" field in the default mapping.
Heres the updated code:
tmpIndexPath := createTmpIndexPath(t)
defer cleanupTmpIndexPath(t, tmpIndexPath)
idxMapping := NewIndexMapping()
idxMapping.DefaultAnalyzer = "en"
if err := idxMapping.AddCustomAnalyzer("custom-html", map[string]interface{}{
"type": custom.Name,
"tokenizer": "unicode",
"char_filters": []interface{}{html_char_filter.Name},
}); err != nil {
t.Fatal(err)
}
msg := []struct {
Id string
Body string
}{
{
Id: "1",
Body: "You trusted bbs server all proxies",
},
{
Id: "2",
Body: "this is NOT bbs server safe",
},
}
fm := mapping.NewTextFieldMapping()
fm.Analyzer = "custom-html"
idxMapping.DefaultMapping.AddFieldMappingsAt("Body", fm)
idx, err := New(tmpIndexPath, idxMapping)
if err != nil {
t.Fatal(err)
}
defer func() {
err = idx.Close()
if err != nil {
t.Fatal(err)
}
}()
for _, v := range msg {
idx.Index(v.Id, v)
}
keywords := []string{"Body:bbs", "Body:server"}
for _, v := range keywords {
query := NewQueryStringQuery(v)
searchRequest := NewSearchRequest(query)
searchResult, err := idx.Search(searchRequest)
if err != nil {
panic(err)
}
if searchResult.Hits.Len() > 0 {
fmt.Println("Search "+v+" found ", searchResult.Hits.Len())
} else {
fmt.Println("Search " + v + " Not found!")
}
}
I index html contents. but search error:
`msg := []struct {
Id string
Body string
}{{Id: "1", Body: "
{Id: "2", Body: "
Search "bbs" no results, but search "server" give 2 results.
The text was updated successfully, but these errors were encountered: