青岛本地招聘网站直播app开发公司排名
青岛本地招聘网站,直播app开发公司排名,wordpress照片ppt,如何设置wordpress的文章分类lucene自动补全最简单的Apache Lucene查询TermQuery匹配包含指定术语的任何文档#xff0c;无论该术语出现在每个文档中的何处 。 使用BooleanQuery可以将多个TermQuery组合在一起#xff0c;并完全控制哪些术语是可选的#xff08; SHOULD #xff09;和哪些是必需的… lucene自动补全 最简单的Apache Lucene查询TermQuery匹配包含指定术语的任何文档无论该术语出现在每个文档中的何处 。 使用BooleanQuery可以将多个TermQuery组合在一起并完全控制哪些术语是可选的 SHOULD 和哪些是必需的 MUST 或不应该存在 MUST_NOT 但是匹配仍然忽略了每个术语在。文件。 有时您确实在乎术语的位置在这种情况下Lucene具有各种所谓的邻近查询。 最简单的邻近查询是PhraseQuery 以匹配特定的令牌序列例如“ Barack Obama”。 如图所示 PhraseQuery是一条简单的线性链 默认情况下短语必须精确匹配但是如果您设置非零倾斜系数 则即使标记不完全按顺序排列只要编辑距离在指定的倾斜范围内文档仍然可以匹配。 例如倾斜系数为1的“巴拉克·奥巴马”还将与包含“巴拉克·侯赛因·奥巴马”或“巴拉克·H·奥巴马”的文档匹配。 如下图所示 现在图中有多个路径包括任意 * 转换以匹配任意标记。 注意虽然图形无法正确表达它但此查询还将匹配一个将令牌Barack和Obama放在同一位置的文档这有点奇怪 通常邻近查询在CPU和IO资源上的开销都更大因为对于每个潜在的文档命中而言邻近查询必须加载解码并访问另一个维度位置。 也就是说对于精确的匹配无斜率使用通用语法带状疱疹和ngram来索引索引中的其他“接近项”可以在某些情况下提供巨大的性能改进但要以增加索引大小为代价。 MultiPhraseQuery是另一个邻近查询。 它通过在每个位置允许多个令牌来概括PhraseQuery 例如 这与包含domain name system或domain name service任何文档匹配。 MultiPhraseQuery还接受坡度因子以允许进行非精确匹配。 最后范围查询例如SpanNearQuery SpanFirstQuery 走得更远允许您基于每个子句匹配的位置来构建复杂的复合查询。 它们的独特之处在于您可以任意嵌套它们。 例如您可以先构建一个与SpanNearQuery 1的巴拉克·奥巴马Barack Obama匹配的SpanNearQuery 然后再匹配一个与乔治·布什George Bush匹配的对象然后再创建一个SpanNearQuery 将这两个都作为子条款如果它们在10个词条之内出现则匹配。 TermAutomatonQuery简介 从Lucene 4.10开始将有一个新的邻近查询以进一步概括MultiPhraseQuery和span查询它使您可以直接构建一个任意自动机表达术语必须按顺序出现的方式包括处理斜率的任何过渡。 这是一个例子 这是一个非常专业的查询可让您精确控制组成匹配的令牌顺序。 您将按状态和按过渡构建自动机包括显式添加任何过渡对不起尚无QueryParser支持欢迎使用补丁。 一旦完成查询将确定自动机然后使用与诸如FuzzyQuery之类的查询用于快速术语匹配的相同基础结构例如CompiledAutomaton 但将其应用于术语位置而不是术语字节。 该查询像短语查询一样天真的得分在某些情况下可能不理想。 除了此新查询之外还有一个简单的实用程序类TokenStreamToTermAutomatonQuery 该类可将任何图TokenStream转换为等效的TermAutomatonQuery 。 这很强大因为它意味着即使是任意令牌流图也可以在搜索时正确表示并保留了某些令牌化程序现在设置的PositionLengthAttribute 。 尽管这意味着您最终可以在查询时正确地应用任意令牌流图同义词因为索引仍未存储PositionLengthAttribute 索引时同义词仍不完全正确 。 这就是说它是简单的建立一个TokenFilter写入位置长度为有效载荷然后延长新TermAutomatonQuery从有效载荷读取和匹配过程中采用的是长度补丁欢迎。 该查询可能相当慢因为它假定每个术语都是可选的。 在许多情况下确定所需条件例如上例中的奥巴马并优化此类情况将很容易。 如果查询是从令牌流派生的因此它没有周期并且不使用任何转换则枚举自动机接受的所有短语可能会更快Lucene已经具有getFiniteStrings API可以对任何自动机然后根据这些词组查询构造布尔查询。 这将匹配同一组文档也将正确保留PositionLengthAttribute 但是将分配不同的分数。 该代码是非常新的肯定有一些令人兴奋的错误 但这对于任何需要精确控制术语在文档中出现位置的应用程序来说都是一个不错的开始。 翻译自: https://www.javacodegeeks.com/2014/08/a-new-proximity-query-for-lucene-using-automatons.htmllucene自动补全
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/87828.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!