当我使用的分析仪edgengram(分= 3,最大= 7,前面)+ term_vector = with_positions_offsets
对于具有文本文档=“CouchDB的”
当我搜索“couc”
我的亮点是在“凑”,而不是“couc”
看来我的亮点是仅在最小匹配令牌“腠理”,而我希望是确切的令牌(如果可能)或至少最长的令牌中。
它正常工作而不term_vector = with_positions_offsets分析文本
什么是去除term_vector = with_positions_offsets为perfomances的影响?
当设置term_vector=with_positions_offsets
特定字段就意味着要存储每文档中,术语载体,该字段。
当谈到突出,长期向量允许您使用Lucene的快速矢量荧光笔,比标准的荧光笔更快。 其原因是,标准的荧光笔不具有任何快速的方式来突出以来,该指数不包含足够的信息(位置和偏移量)。 它只能重新分析字段内容,拦截偏移量和位置,并根据这些信息突出。 这可能需要相当长的时间,尤其是长文本字段。
使用词向量你有足够的信息,不需要再对文本进行分析。 不足之处是该指数,这将显着增加的大小。 我要补充的是,由于Lucene的4.2项向量是更好的压缩和存储优化的方式虽然。 还有还有基于存储偏移量的贴子列表中,这需要更少空间的能力的新PostingsHighlighter。
elasticsearch自动使用能够基于现有的信息突出显示的最佳方式。 如果存储了长期的载体,它会使用快速矢量荧光笔,否则标准之一。 当你不重新索引词条向量,高亮会使用标准的荧光笔进行。 这将是慢,但该指数会更小。
对于NGRAM领域,所描述的行为是奇怪的,因为快速向量高亮应该有NGRAM领域提供更好的支持,因此我希望完全相反的结果。
我知道这个问题是旧的,但它没有完全回答:
还有另一种选择,可以产生这样一个奇怪的现象:
你必须设置require_field_match
到true
,如果你不想要的文件应该影响当前文档高亮,其他结果,请参见: http://www.elasticsearch.org/guide/reference/api/search/highlighting/