论坛首页 入门技术论坛

lucene问题

浏览 3020 次
锁定老帖子 主题:lucene问题
该帖已经被评为新手帖
作者 正文
   发表时间:2007-08-22  
索引已经建立,但就是检索不到数据。hits.length()一直为0

public Hits search(String queryString) {
Hits hits = null;

try {

File file = new File(indexPath);

Directory directory = FSDirectory.getDirectory(file);

IndexSearcher searcher = new IndexSearcher(directory);

String[] fields = { "CUSTOMERID", "SHIPNAME", "SHIPCITY",
"SHIPCOUNTRY" };
MultiFieldQueryParser mQueryPaser = new MultiFieldQueryParser(
fields, getAnalyzer());

Query query = mQueryPaser.parse(queryString);

hits = searcher.search(query);

} catch (Exception e) {
//do something here
}

return hits;
}

public void doIndex(String sql) {

try {

IndexWriter writer = new IndexWriter(indexPath, getAnalyzer(), true);

ResultSet rs = luceneDB.getResult(sql);

while (rs.next()) {
Document doc = new Document();
doc.add(new Field("CUSTOMERID", rs.getString("CUSTOMERID"),
Field.Store.YES, Field.Index.TOKENIZED));
doc.add(new Field("SHIPNAME", rs.getString("SHIPNAME"),
Field.Store.YES, Field.Index.TOKENIZED));
doc.add(new Field("SHIPCITY", rs.getString("SHIPCITY"),
Field.Store.YES, Field.Index.TOKENIZED));
doc.add(new Field("SHIPCOUNTRY", rs.getString("SHIPCOUNTRY"),
Field.Store.YES, Field.Index.TOKENIZED));

writer.addDocument(doc);
}
writer.optimize();
writer.close();

} catch (CorruptIndexException ce) {
System.out.println(ce.getMessage());
} catch (IOException ie) {
System.out.println(ie.getMessage());
} catch (SQLException se) {
System.out.println(se.getMessage());
}
}


public Analyzer getAnalyzer() {
return new StandardAnalyzer();
}
   发表时间:2007-08-28  
哈哈,估计你的索引字段名都是大写的,但是查询的时候用查询词是要进过StandardAnalyzer的,这样QueryPaser出来的Query字段全都成了小写的,当然什么都查不出来。你可以在
Query query = mQueryPaser.parse(queryString);
后面把query打印出来看看
0 请登录后投票
   发表时间:2007-08-30  
field都改成小写也还是不行,我用的是lucene2.2的,很郁闷
0 请登录后投票
   发表时间:2007-08-31  
介绍你个老外弄的Luke,可以查看你索引文件里的内容。另外你的 MultiFieldQueryParser mQueryPaser = new MultiFieldQueryParser(
fields, getAnalyzer());

Query query = mQueryPaser.parse(queryString);//这个parse是继承QueryParser的吧,你的queryString是怎么传的呢(是不是field:value)?有可能是这里的问题。
0 请登录后投票
   发表时间:2007-08-31  
我认为这里应该不是分析器Analyzer的缘故,因为indexWriter与IndexSearcher用的是同一种Analyzer,怀疑还是你的queryString的问题,你可以试试
public static Query parse(String[] queries, String[] fields,Analyzer analyzer) throws ParseException
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics