尝试使用我使用以下映射的自动完成功能
分析:filter:placename_ngram:max_gram = 15,min_gram = 2,type = edge_ngram analyzer:index:filter:lowercase,placename_ngram,tokenizer:keyword placename_search:filter:lowercase:tokenizer keyword
这适用于类型提前,但当我试图找到像“包含”这样的值时,它不会返回记录 .
如果我正在对“Lake”进行文本查询 .
我只会得到
湖......湖木,
但是不会得到史密斯敦湖
我将字段设置为多字段,可以使用通配符查找值,但不确定这是否有效 .
我相信我可以使用NGRAM,但这似乎有很多开销,因为我只需要空格(或字)索引术语 . 不是每次都会 .
有什么想法吗?
当我将两者上的标记器更改为“标准”......然后它会找到这些记录......但是我的自动完成程序搞砸了并且在键入Lak时带回了Smithtown Lake .....(在这种情况下我不喜欢不想要的 .
谢谢你的帮助
2 回答
看看这个question where they were doing 2 different queries on the same field.
基本上你就在那里,但是你需要写两个不同的查询,一个用于自动完成时间,另一个用于完全搜索时间 .
你甚至描述了想要在搜索期间返回"Smithtown Lake"而不是在自动完成期间返回,你 need 有不同的查询你想要不同的结果!
我认为带状疱疹正是你想要的 . 你可以说它是NGram for Terms . Checkout this.