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 索引

Zend_Search_Lucene,如何通过网络共享索引存储文件夹

Lucene-索引库的维护

lucene查询索引的6个步骤

Lucene-Lucene的Field及其分页查询

Lucene 6.6.0 中的索引时间字段级别提升?