我是 flex 搜索的新手。我正在尝试修复搜索,以便用户可以搜索html标记内的内容。当前,我们正在使用空白 token 生成器,因为我们需要它来返回带连字符名称的结果。因此,aname123-suffix project
被索引为["aname123-suffix", "project"]
,并且用户搜索"aname123-*"
会返回正确的结果。
出现我的问题是因为我们还希望能够搜索html标记内的内容。因此,例如对于一个名为<aname123>-suffix project
的项目,我们希望能够输入搜索词<aname123>-*
并获取正确的结果。
该索引具有用于空白标记器的正确标记,即["<aname123>-suffix", "project"]
,但是当我的搜索字符串是"\<aname123\>\-suffix"
或"\\<aname123\\>\\-suffix"
时, flex 搜索不会返回任何结果。
我认为解决方案在于
<aname123>-suffix
;或["<aname123>-suffix", "project", "aname123", "suffix"]
到目前为止,我一直在通过更改索引来实现这一目标,但尚未成功。标准 token 生成器将允许在标签内搜索内容的结果,但是无法返回
aname123-*
的搜索结果。目前,我的分析仪设置如下所示:{ "analysis":
{ "analyzer":
{ "my_whitespace_analyzer" :
{"type": "custom"
{"tokenizer": "whitespace},
{"filter": ["standard", "lowercase", "stop"]}
}
},
{ "my_tag_analyzer":
{"type": "custom"
{"tokenizer": "standard"},
{"filter": ["standard", "lowercase", "stop"]}
}
}
}
}
我可以创建一个自定义的char过滤器,以除去,因此索引包含
aname123
;但是由于某种原因,在<aname123>*
上进行搜索时, flex 搜索仍然无法返回正确的结果。但是,当我改用标准分析器时,索引包含aname123
并返回<aname123>*
的预期结果... flex 搜索中的尖括号有什么特别之处? 最佳答案
您可能需要看一下html_strip字符过滤器:
https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-htmlstrip-charfilter.html
来自其中一名Elasticsearch开发人员的示例如下:
https://gist.github.com/clintongormley/780895