首页 文章

如何自动完成并执行相同字段的包含

提问于
浏览
0

尝试使用我使用以下映射的自动完成功能

分析: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 回答

  • 0

    看看这个question where they were doing 2 different queries on the same field.

    基本上你就在那里,但是你需要写两个不同的查询,一个用于自动完成时间,另一个用于完全搜索时间 .

    你甚至描述了想要在搜索期间返回"Smithtown Lake"而不是在自动完成期间返回,你 need 有不同的查询你想要不同的结果!

  • 0

    我认为带状疱疹正是你想要的 . 你可以说它是NGram for Terms . Checkout this.

相关问题