我目前正在使用ngram开发自动建议功能。
我有以下过滤器、分析仪:
"nGram_filter": {
"type": "nGram",
"min_gram": 3,
"max_gram": 10,
"token_chars": [
"letter",
"digit",
"punctuation",
"symbol"
]
}
"nGram_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"asciifolding",
"nGram_filter"
]
}
现在当我标记样本数据 test_table_for analyzers
并搜索字符串测试,表格,分析器,我能得到上面的记录。现在我了解到令牌是用我指定的过滤器创建的,因此它可以工作。
但是我需要添加另一个特性-我也需要启用前缀过滤器。例如:当我搜索test\u table(10个字符)时,我能够得到结果,因为max n-gram是10,但是当我尝试test\u table\u for时,它返回零结果,因为记录中没有这个标记 test_table_for analyzers
.
如何为现有的n-gram分析器添加基于前缀的过滤器?就像我应该能够得到结果匹配最多10个字符时,搜索(目前的工作),而且我应该能够建议何时搜索字符串匹配的记录从一开始。
1条答案
按热度按时间wpcxdonn1#
使用单个分析器是不可能的,您必须创建另一个字段,在该字段中可以创建用于
prefix
搜索,添加索引Map,显示其中还包括您当前的分析器。索引Map
现在你可以用
analyze
确认前缀令牌的api:还有你的信物
test_table_for
也存在,如下所示现在,您可以使用多重匹配查询,它将为您提供所需的搜索结果,如下所示:
搜索查询
搜索结果