Lucene Search查询标记化索引中的多个值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lucene Search查询标记化索引中的多个值相关的知识,希望对你有一定的参考价值。
我是Lucene索引的新手。我有一个表字段ID,NAME和NATIONALITY都使用NGRAM分析器(2,2)索引。现在我需要从表中查询ID列表(例如12345和98765)。我怎样才能做到这一点?
我试过像这样的布尔查询:
BooleanQuery.add("ID:"12 23 34 45" ,Occur.SHOULD);
BooleanQuery.add("ID:"98 87 76 65" ,Occur.SHOULD);
由于索引是使用Ngram Analyzer完成的,其maxgram width为2.它获取列表并将其设置为2并进行搜索;结果 - 我得到一个包含如此多值的ID列表。
我试过Occur.MUST。但返回0结果。
答案
在查询语法中,我认为你想要:
( +12 +23 +34 +45 ) ( +98 +87 +76 +65 )
它将返回所有(12,23,34,45)或全部(98,87,76,65)的命中。基本上,来自ID本身的ngrams必须是查询,包含在一个SHOULD查询中(这个包装是秘密的酱)。
以上是关于Lucene Search查询标记化索引中的多个值的主要内容,如果未能解决你的问题,请参考以下文章
Neo4j,在返回可分页结果的同时查询多个 lucene 索引