时间:2014-12-09 来源:

【Elasticsearch】全文搜索(四)-控制分析及相关度 【移动开发】

控制分析(Controlling Analysis) 查询只能摘到真实存在于倒排索引(Inverted Index)中的词条(Term),因此确保相同的分析过程会被适用于文档的索引阶段和搜索阶段的查询字符串是很重要的,web切图报价解析器(Analyzer)是因字段而异的(Determined per Field).每个字段都能够拥有一个不同的解析器,html切图制作索引(Index)或者节点(Node)的默认解析器.在索引时,wap前端外包一个字段的值会被该字段的解析器解析.

所以这就排除了在节点上配置解析器的必要.另外web前端制作,在节点上配置解析器会改变每个节点的配置文件并且需要重启每个节点,web前端制作这是维护上的噩梦.让ES持续运行并且只通过API来管理设置是更好的主意.

直接定义在查询中的analyzer定义在字段映射中的analyzertype默认的analyzer,它的默认值是在索引设置(Index Settings)中名为default的解析器,div前端切图它的默认值是节点上名为default的解析器web切图报价,它的默认值是standard解析器 NOTE

这说明当我们为词条fox执行一个低级的term查询时,web切图报价english_title字段能匹配而title字段不能.

类似match查询的高阶查询能够理解字段映射(Field Mappings),同时能够为查询的每个字段适用正确的解析器.我们可以通过validate-query API来验证这一点:

对于日志这类基于时间的数据,符合w3c标准一个常用的工作流是每天即时地创建一个新的索引并将相应数据索引到其中.尽管这个工作流会让你无法预先创建索引网页外包接活,它的默认值是type的默认analyzer,它的默认值是索引设置中default_index对应的解析器,web前端制作它的默认值是索引设置中default对应的解析器承接网页制作,它的默认值是节点上default_index对应的解析器,承接网页制作它的默认值是节点上default对应的解析器web切图报价,它的默认值是standard解析器 而查询期间的完整顺序则是:

第一件需要记住的是,网站div+css即使你是因为一个单一的目的或者需要为一个例如日志的应用而使用ES的符合w3c标准,很大可能你在将来会发现更多的用例,符合w3c标准因此你会在相同的集群上运行多个独立的应用.每个索引都需要是独立的并且被独立地配置.

解析器可以在几个级别被指定.ES会依次检查每个级别直到它找到了一个可用的解析器.在索引期间网页外包接活,检查的顺序是这样的:

将这些额外的参数也考虑进来的话,wap前端外包索引期间查找解析器的完整顺序是这样的:

定义在字段映射中的analyzer文档的_analyzer字段中定义的解析器type默认的analyzer,它的默认值是在索引设置(Index Settings)中名为default的解析器,div+css制作它的默认值是节点上名为default的解析器承接网页制作,它的默认值是standard解析器 在搜索期间,承接网页制作顺序稍微有所不同:

直接定义在查询中的analyzer定义在字段映射中的search_analyzer定义在字段映射中的analyzertype的默认search_analyzer,它的默认值是索引设置中的default_search对应的解析器符合w3c标准,它的默认值是索引设置中的default对应的解析器,html切图制作它的默认值是节点上default_search对应的解析器网页外包接活,它的默认值是节点上default对应的解析器,wap前端外包它的默认值是standard解析器 配置解析器 能够指定解析器的地方太多也许会吓到你.但是实际上web前端制作,它是非常简单的.

偶尔,web前端制作在索引期间和查询期间使用不同的解析器是有意义的.比如承接网页制作,在索引期间我们也许希望能够索引同义词(Synonyms)(比如,div前端切图对每个出现的quick,rapid和speedy).但是在查询期间符合w3c标准,我们必须要搜索以上所有的同义词.相反我们只需要查询用户输入的单一词汇,符合w3c标准不管是quick,rapid或者speedy.

典型地web前端制作,大多数字符串字段都会是精确值类型的not_analyzed字段,web前端制作比如标签或者枚举承接网页制作,加上一些会使用standard或者english以及其他语言解析器的全文字段.然后你会有一两个字段需要自定义解析:比方title字段的索引方式需要支持"输入即时搜索(Find-as-you-type)".

因为我们的文档被均匀地分布了,承接网页制作两个分片上计算得到的IDF应该是相同的.现在想象一下如果含有foo的5份文档被保存在了分片1上web切图报价,而只有1份含有foo的文档被保存在了分片2上.在这种情况下,网站div+css词条foo在分片1上就是一个非常常见的词条(重要性很低),但是在分片2上,符合w3c标准它是非常少见的词条(重要性很高).因此网页外包接活,这些IDF的差异就会导致错误的结果.

使用索引设置,wap前端外包而不是配置文件

在什么是相关度一节中web前端制作,TF/IDF).词条频度计算词条在当前文档的对应字段中出现的次数.词条出现的次数越多承接网页制作,那么该文档的相关度就越高.倒排文档频度将一个词条在索引的所有文档中出现程度以百分比的方式考虑在内.词条出现的越频繁,承接网页制作那么它的权重就越小.

不要在生产环境中使用dfs_query_then_fetch.它真的是不必要的.拥有足够的数据就能够确保你的词条频度会被均匀地分布.没有必要再为每个查询添加这个额外的DFS步骤.

在继续讨论更加复杂的多字段查询前web切图报价,让我们先快速地解释一下为何将测试索引创建成只有一个主分片的索引.

比如,web切图报价让我们为my_index添加一个新字段:

match查询会为每个字段适用正确的解析器符合w3c标准,来确保该字段的查询词条的形式是正确的.

实际情况下,html切图制作这并不是一个问题.当你向索引中添加的文档越多网页外包接活,本地IDF和全局IDF之间的差异就会逐渐减小.考虑到真实的世界中的数据量,wap前端外包本地IDF很快就会变的正常.问题不是相关度web前端制作,它会告诉ES首先从每个分片中获取本地IDF,然后计算整个索引上的全局IDF.

以上两个斜体表示的项目突出显示了索引期间和搜索期间顺序的不同之处._analyzer字段允许你能够为每份文档指定一个默认的解析器(比如,div前端切图english,spanish),而查询中的analyzer参数则让你能够指定查询字符串使用的解析器.然而,符合w3c标准这并不是在一个索引中处理多语言的最佳方案网页外包接活,因为在处理自然语言中提到的一些陷阱.

经常有新的用户反映称相关度出问题了,jpg或psd转html并且提供了一个简短的重现:用户索引了一些文档web前端制作,运行了一个简单的查询,web前端制作然后发现相关度低的结果明显地出现在了相关度高的结果的前面.

GET /my_index/my_type/_validate/query?explain { "query": { "bool": { "should": [ { "match": { "title": "Foxes"}}, { "match": { "english_title": "Foxes"}} ] } } } 它会返回这个explanation:

但是,承接网页制作因为性能上的原因web切图报价,ES不会计算索引中所有文档的IDF.相反,网站div+css每个分片会为其中的文档计算一个本地的IDF.

TIP

GET /my_index/_analyze?field=my_type.title Foxes GET /my_index/_analyze?field=my_type.english_title Foxes 对于title字段符合w3c标准,它使用的是默认的standard解析器,符合w3c标准它会返回词条foxes. 对于english_title字段网页外包接活,它使用的是english解析器,wap前端外包它会返回词条fox.

NOTE

保持简单(Keep it simple)

多数时候web前端制作,你都能提前知道你的文档会包含哪些字段.最简单的办法是在创建索引或者添加类型映射时为每个全文字段设置解析器.尽管该方法稍微有些繁琐,div+css制作它能够让你清晰地看到每个字段上使用的解析器.

默认解析器(Default Analyzers) 尽管我们能够为字段指定一个解析器承接网页制作,但是当没有为字段指定解析器时,承接网页制作如何决定字段会使用哪个解析器呢?

为了弄明白它发生的原因web切图报价,让我们假设我们创建了一个拥有两个主分片的索引,web切图报价并且索引了10份文档符合w3c标准,其中的6份含有单词foo.在分片1上可能保存了包含单词foo的3份文档,html切图制作在分片2上保存了另外3份.换言之网页外包接活, "analyzer": "english" } } } } 现在我们就能够通过analyze API来比较english_title字段和title字段在索引时的解析方式web前端制作,以Foxes这一单词为例:

对于测试,web前端制作有两种方法可以规避该问题.第一种方法是创建只有一个主分片的索引承接网页制作,正如我们在介绍match查询时做的那样.如果你只有一个分片,div前端切图那么本地IDF就是全局IDF.

你可以在索引中设置default解析器web切图报价,用来将它作为大多数全文字段的解析器,web切图报价然后对某一两个字段配置需要的解析器.如果在你的建模中符合w3c标准,你需要为每个类型使用一个不同的默认解析器,符合w3c标准那么就在类型级别上使用analyzer设置.

相关度出问题了(Relevance is Broken)

为了实现这个区别网页外包接活,ES也支持index_analyzer和search_analyzer参数,jpg或psd转html以及名为default_index和default_search的解析器.

点击次数:5043
作者:
web前端行业资讯
Web new NewsList
谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日苹果经典电脑Lisa源代码修复完成将于2018年开源 ,,2017年12月28日腾讯浏览指数发布年终榜单2017年人们都关注哪些AI话题? ,,2017年12月28日除了发现开普勒90,NASA还靠AI做了什么? ,,2017年12月28日柯洁宣布:明年4月,将再次与围棋AI交锋 ,,2017年12月28日百度无人车美国首秀CES将发布Apollo2.0 ,,2017年12月28日这四种技术发展趋势将在2018年改变世界 ,,2017年12月28日2017:谷歌DeepMind团队的年度回顾 ,,2017年12月28日封杀这个公式,AI智商将为零 ,,2017年12月28日微软AI高管:要让所有人、所有机构都用上人工智能 ,,2017年12月28日为什么Linux桌面年一直未到来 ,,2017年12月28日AppleLisa操作系统将开源 ,,2017年12月28日2018年9大技术趋势预测 ,,2017年12月28日谷歌研究院发布NIMA:能评价图像有多美,还能让图像变得更美 ,,2017年12月28日苹果为2019年iPhone开发大容量电池新技术 ,,2017年12月28日谷歌发布Tacotron2:能更简单地训练AI学习演讲 ,,2017年12月21日TensorFlow漏洞爆发背后:关于AI安全我们的傻与天真 ,,2017年12月21日Android端Edge浏览器新版发布:常规性能优化和BUG修复 ,,2017年12月21日三星开发出全球最小的DRAM芯片技术领先优势扩大 ,,2017年12月21日腾讯绝艺AI下一步将学习AlphaGozero自对弈训练 ,,2017年12月21日Facebook社交VR应用Spaces扩大覆盖面:入驻HTCVive ,,2017年12月21日设计图曝光:三星双屏折叠手机原来是这样的 ,,2017年12月21日微信支付和支付宝已成为世界移动支付的"老师" ,,2017年12月21日新专利表明FaceID未来有望装备在iPad、MacBook和iMac等设备 ,,2017年12月21日首批九个建议加入EE4J的项目 ,,2017年12月21日这就是SurfacePhone?微软可折叠手机概念图曝光 ,,2017年12月21日谷歌云平台GoogleComputeEngine新增Pascal架构GPU ,,2017年09月28日全局批注、涂鸦【编程语言】2015年04月03日HTTP报文 【编程语言】2015年07月22日BZOJ1742Usaco2005novGrazingontheRun边跑边吃草动态规划 【综合】2015年05月05日jQuery插件--Cookie插件 【架构设计】2015年07月20日排序旋转数组查找(Searchinasorted,rotatedlist) 【移动开发】2014年11月10日solr进阶八:jQueryUIAutocomplete与solr搜索结合 【系统运维】2014年12月12日c#爬取Silverlight网页2 【编程语言】2015年04月17日ListViewSnippets列表多选分页【互联网】2015年02月11日【日常学习】【SPFA+SLF+LLL】codevs1021玛丽卡题解 【编程语言】2015年05月18日19种.NET开发工具2014年01月28日asp.net简单工厂模式和工厂方法模式之论述2014年01月29日android学习十三(android的通知使用) 【编程语言】2014年11月18日让c++程序优雅的崩溃 【编程语言】2015年05月05日LeetCodeWordBreakII【云计算】2015年02月09日stl--vector操作实现【移动开发】2015年07月09日ffplay2android版正式发布 【Web前端】2014年12月18日火星人:途古力,马喀哒!(火星语:大家新年好!)【互联网】2015年01月04日asp.net下OnClientClick的妙用!2014年01月29日UVA4683-FindTheNumber 【编程语言】2014年11月04日poj1979dfs【编程语言】2015年07月24日解除服务器端口号占用及服务器端口号的修改 【综合】2015年01月29日WebSpehreMessagerBroker数据库操作 【Web前端】2015年05月13日字符串到字节数组和字节数组到字符串的转换(编码和解码问题)【编程语言】2015年06月01日C++虚函数、静态联编和动态联编、抽象类【移动开发】2015年05月27日一个C#Process编写的文件执行类 【编程语言】2015年06月29日【iOS开发-78】用代码实现UITabBarController+UINavigationController【研发管理】2014年11月20日三、Redis基础命令--hash 【架构设计】2014年11月13日UVA11069-AGraphProblem(DP)【编程语言】2014年11月12日数据库索引的使用 【研发管理】2015年04月03日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)