在lucene中搜索时需要创建术语带状疱疹

时间:2011-11-23 17:11:55

标签: java lucene

我有一个与shingleAnalyzer相关的问题,我想创建搜索词的带状疱疹,同时将它们提供给lucene进行搜索

String term = "new york";
String[] fields = {"city", "city_desc"};
ShingleAnalyzerWrapper shingleWrapper = new ShingleAnalyzerWrapper(new StandardAnalyzerNew(Version.LUCENE_30, new File(GlobalData.GENERAL_STOPWORD_FILE)) , 5);

MultiFieldQueryParser queryParser = new MultiFieldQueryParser(Version.LUCENE_30,
                                                                  fields,
                                                                  shingleWrapper
                                                                 );
Query query = queryParser.parse(term); 
System.out.println("query : " + query.toString());
output: (city : new city_desc: new), (city : york city_desc : york)

这里的术语带状疱疹无法生成,我想输出这样的东西:

output : (city : new city_desc: new), (city : york city_desc : york), (city: new york, city_desc : new york)

有什么想法吗?我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您可以使用覆盖函数getFieldQuery(String,String,boolean)创建从MultiFieldQueryParser派生的查询解析器,其中术语将在带状疱疹中合并,并且将创建来自这些带状疱疹的查询。如果它仍然是实际的我可以得到一个示例代码来执行此操作