首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多项模糊通配符搜索:将所有数据放入一个属性中?

多项模糊通配符搜索:将所有数据放入一个属性中?
EN

Stack Overflow用户
提问于 2017-01-30 16:27:20
回答 1查看 670关注 0票数 0

我目前正在将Elasticsearch作为搜索接口嵌入到现有的应用程序中。该应用程序是一个具有oracle SQL数据库的经典三层应用程序.

我有实体'Person‘(数据库表),具有以下属性:

  • 名名
  • 全名(包含连在一起的名字和姓氏)
  • 人-Nr..
  • 公司名称
  • 地址列表:街道,邮政编码,城市,电话和电子邮件。

到目前为止,我把它放在elasticsearch中,对于elasticsearch中的每一个db列都有一个属性。数据的同步和满载并不是问题。但我很难提供一种“好的”搜索体验,因为有很多不同的事情需要注意:

  • 模糊搜索(一到两个编辑距离的公差)
  • 通配符搜索(如果我输入"Ange",它也应该找到带有“Angelina”的结果)
  • 电子邮件地址搜索(我已经在结合使用uax_url_email令牌程序和keyword数据类型)

据我所知,multi_match类型cross_fields将是一个不错的选择,但它不能进行模糊搜索和通配符。键入best_fields也是没有选择的,因为它不能执行通配符搜索(据我所知?)。most_fields也不适合,phrase matching也不能做模糊。

正因为如此,我目前正在使用simple_query_string,例如:

在搜索字段中,我输入Tom fishersimple_query_string中的查询是:

代码语言:javascript
运行
复制
(tom* | tom~1)+(fisher* | fisher~1)

我现在的问题是,仅仅在字段"entity_content“中包含所有字段的内容是否是个坏主意?这就像我有一个.txt文档,里面有关于这个人的所有信息。

  • 什么是优点/缺点?
EN

回答 1

Stack Overflow用户

发布于 2017-01-31 11:31:58

默认情况下,弹性有_all字段,它已经是所有的字段,例如,所有的信息都存储在这个字段中,而不考虑它的来源。

_all字段可能很有用,特别是在使用简单过滤探索新数据时。但是,通过将字段值连接到一个大字符串中,_all字段就失去了短字段(更相关)和长字段(不太相关)之间的区别。对于搜索相关性很重要的用例,最好具体地查询各个字段。 _all字段不是免费的:它需要额外的CPU周期并使用更多的磁盘空间。如果不需要,它可以完全禁用或定制的基础上,每个领域.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41940790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档