我对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个结果。
答案 0 :(得分:0)
在查询语法中,我认为你想要:
( +12 +23 +34 +45 ) ( +98 +87 +76 +65 )
将返回所有(12,23,34,45)或全部(98,87,76,65)的命中。基本上,来自ID本身的ngrams必须是查询,包含在一个SHOULD查询中(这个包装是秘密的酱油)。