JAVA Lucene没有在Field上提供搜索结果?

时间:2012-07-11 08:26:46

标签: java search lucene

我正在创建一个像这样的Lucene文档:

Document document = new Document();
document.add(new Field(FIELD_FOLDER_PATH,mSearchInput, Field.Store.YES, Field.Index.NOT_ANALYZED ));
Reader reader = new FileReader(file);
document.add(new Field(FIELD_CONTENTS, reader));
indexWriter.addDocument(document);

在CONTENTS上执行查询并使用通配符*时,我可以获取结果:

QueryParser queryParser = new QueryParser (Version.LUCENE_36,FIELD_CONTENTS, analyzer);
Query query = queryParser.parse(searchString+"*");

但是当我对FIELD_FOLDER_PATH使用相同的查询时,我没有得到任何结果:

QueryParser queryParser = new QueryParser (Version.LUCENE_36,FIELD_FOLDER_PATH, analyzer);
Query query = queryParser.parse(FolderPath+"*");

但是只有当我提供确切的字符串时,我才能获取结果。

我的问题是:为什么我无法使用(*)来获取FIELD_FOLDER_PATH中的结果?是因为我创造这个领域的方式吗?

1 个答案:

答案 0 :(得分:0)

您应该使用通配符查询来支持此类功能。 这个链接会有所帮助:

http://lucene.apache.org/core/old_versioned_docs/versions/3_0_1/api/core/org/apache/lucene/search/WildcardQuery.html

所以你应该做的就是使用queryparser和其他使用通配符查询创建两个查询,然后在两个查询中使用带有“SHOULD”子句的BooleanQuery中的查询。

有关布尔查询的详细信息,请访问此链接:

http://lucene.apache.org/core/old_versioned_docs/versions/3_0_2/api/core/org/apache/lucene/search/BooleanQuery.html