Lucene 获取n条记录而不使用术语。。。?(卢塞恩)
如何在不使用lucene中的术语的情况下获取n个记录 例如,fieldname=“id”,我想获得id字段的前10条记录,不带任何术语 我的代码是:Lucene 获取n条记录而不使用术语。。。?(卢塞恩),lucene,Lucene,如何在不使用lucene中的术语的情况下获取n个记录 例如,fieldname=“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")) Di
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 Term Query(New Term(“id”))
更改为Dim q As Query=New Term Query(New Term(“id”,“10”))
时,它就可以工作了,但我不想使用任何术语查询,我只想获得id字段的10条记录。有一些可能性,这取决于您正在寻找的内容
- 如果您只想从索引中获取10个文档,请使用
- 如果只希望获取具有field=“id”值的文档,则可以使用开放式。如果传递给范围查询的底部和顶部值均为
,则它将搜索该字段具有任何(非null)值的所有文档,例如:null
newtermrangequery(“id”,null,null,true,true)
- 如果您只想查看id字段中的所有术语,您可以从
中获取IndexReader
,而不是搜索,类似于:TermEnum
TermEnum terms = reader.Terms(new Term("id")); while(terms.next()) { Term currentTerm = terms.term(); if (!(currentTerm.field().equals())) { break; } String value = currentTerm.text(); //Whatever else you need to do with the value }