在索引方法中,我使用以下行:FieldcontentsField=newField("contents",newFileReader(f),Field.TermVector.YES);但是,在Lucene4.0中,此构造函数已弃用,应使用newTextField而不是newField。但是TextField的问题在于它在其构造函数中不接受TermVector。有没有办法在Lucene4.0中使用新的构造函数将词vector包含在我的索引中?谢谢 最佳答案 我有同样的问题,所以我只是简单地创建了自己的字段:publicclassVec
我正在尝试将我的代码从Lucene3.4更新到4.1。我想出了除了一个之外的变化。我有需要迭代一个字段的所有术语值的代码。在Lucene3.1中,有一个IndexReader#terms()方法提供了一个TermEnum,我可以对其进行迭代。对于Lucene4.1,这似乎已经改变,即使在文档中搜索了几个小时后,我也无法弄清楚如何。有人可以指出我正确的方向吗?谢谢。 最佳答案 请关注Lucene4Migrationguide::Howyouobtaintheenumshaschanged.Theprimaryentrypointist
我想在Lucene中结合数字范围查询和术语查询。例如,我想搜索已编入索引且包含10到20页且标题为“HelloWorld”的文档。似乎不可能使用QueryParser为我生成这个查询;QueryParser生成的范围查询似乎是一个文本查询。我非常希望看到一个如何将数字范围查询与术语查询相结合的示例。我也愿意采取替代方案来搜索我的索引。谢谢 最佳答案 看来这是我自己想出来的。您可以使用Query.combine()将OR查询组合在一起。我在下面包含了一个示例。StringtermQueryString="title:\"hellowo
是否可以在Java中使用Lucene搜索日期范围?如何基于日期字段和日期范围构建Lucene搜索查询?例如:在指定日期之间在指定日期之前在指定日期之后在过去24小时内在过去一周内在过去一个月内。[编辑]我正在使用Lucene2.4.1,我的系统确实很老旧,而且测试很差,所以如果可能的话,我希望不必升级 最佳答案 Lucene(无论如何在2.9版之前)只存储String值,并且它只支持对该数据的字典范围查询。因此,如果您想存储日期/时间数据并对其执行范围查询,则需要明确格式化您的数据/时间值,以使它们按字典顺序排列。例如,将日期/时间
我有一个包含三个字段(用户ID、标题、描述)的索引对象。我想查找标题或描述包含给定关键字的特定用户的所有对象。我有这样的东西(但这显然是错误的):WildcardQuerynameQuery=newWildcardQuery(newTerm("name",filter.getSearch()));WildcardQuerydescQuery=newWildcardQuery(newTerm("description",filter.getSearch()));TermQueryuserQuery=newTermQuery(newTerm("user_id",u.getId()+""))
我正在尝试将字符串标记为ngram。奇怪的是在NGramTokenizer的文档中我没有看到将返回已标记化的单个ngram的方法。事实上,我在NGramTokenizer类中只看到两个返回字符串对象的方法。这是我的代码:Readerreader=newStringReader("Thisisateststring");NGramTokenizergramTokenizer=newNGramTokenizer(reader,1,3);标记化的ngram在哪里?如何获得字符串/单词的输出?我希望我的输出是这样的:This,is,a,test,string,Thisis,isa,atest,
有很多示例展示了如何像这样使用StandardTokenizer:TokenStreamtokenStream=newStandardTokenizer(Version.LUCENE_36,newStringReader(input));但在较新的Lucene版本中,此构造函数不可用。新的构造函数如下所示:StandardTokenizer(AttributeFactoryfactory)这个AttributeFactory的作用是什么?我如何在较新版本的Lucene中标记字符串? 最佳答案 AttributeFactory创建At
我们如何构造一个查询来搜索特定字段不为空?field_name:*无效。我尝试了field_name:[a*toz*]这适用于英语,但并不涵盖所有语言。还有其他建议吗? 最佳答案 我发现这在某些情况下有效field:([0TO9][aTOz]) 关于java-Lucene不是空查询?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5384423/
我正在尝试实现文档索引(大致对应于数据库行),其中一个字段是整数。我将它们添加到索引中,例如:Documentdoc=newDocument();doc.add(newStringField("ticket_number",rs.getString("ticket_number"),Field.Store.YES));doc.add(newIntField("ticket_id",rs.getInt("ticket_id"),Field.Store.YES));doc.add(newStringField("id_s",rs.getString("ticket_id"),Field.S
在lucene中索引一个boolean值(true/false)(不需要存储)我想获得更多的磁盘空间使用率和更高的搜索性能doc.add(newField("boolean","true",Field.Store.NO,Field.Index.NOT_ANALYZED_NO_NORMS));//ordoc.add(newField("boolean","1",Field.Store.NO,Field.Index.NOT_ANALYZED_NO_NORMS));//ordoc.add(newNumericField("boolean",Integer.MAX_VALUE,Field.St