在lucene中,我如何不使用一个术语来获得n个记录?
例如,字段名= " id ",我希望获得id字段的前10条记录,而不需要任何术语。
我的代码是:
Dim qp As New QueryParser(Version.LUCENE_30,"id", analyzer)
Dim searcher = New IndexSearcher(directory, True)
Dim q As Query = New TermQuery(New Term("id"))
Dim hits As TopDocs = searcher.Search(q, 10)不起作用。
当我将Dim q As Query = New TermQuery(New Term("id"))更改为Dim q As Query = New TermQuery(New Term("id","10"))时,它就起作用了,但我不想使用任何术语查询,我只想获得10条id字段的记录。
发布于 2013-11-13 17:50:13
有几种可能性,取决于你在寻找什么。
MatchAllDocsQuery。TermRangeQuery。如果传递给range查询的底部和顶部值都是null,那么它将搜索该字段的所有带有任何(非空)值的文档,例如:new TermRangeQuery("id", null, null, true, true)。TermEnum中获取一个IndexReader,而不是进行搜索,如下所示:
TermEnum terms =reader.Terms(新项(“id”));while(terms.next()) { Term currentTerm = terms.term();if (!(currentTerm.field().equals(){ break;} String值= currentTerm.text();//您需要对该值做的其他任何事情。https://stackoverflow.com/questions/19957248
复制相似问题