[lucene] lucene的过程中遇到一个问题

caojianxiang 2009-05-14
我在学习lucene的过程中遇到一个问题,如下程序:

public class Chinese {
private static String FIELD_NAME = "content";
private static String QUERY = "共和国";

public static void main(String[] args) throws Exception {
if (args.length != 0) {
QUERY = args[0];
}
Analyzer analyzer = new StandardAnalyzer();

String content = "中华人民共和国(英文:The People's Republic of China,通常简称为中国...];中华人民共和国将行政區劃分为23个省、5个少数民族自治区、4个直辖市、以及2个特别行政区,但台湾不在中华人民共和国政府实际控制范围内(参见:台湾问题)。中华人民共和国是世界上人口最多的国家,人口总数...,其余55个民族被统称为少数民族。中华人民共和国境内的通用语言是汉语普通话,使用的文字是规范汉字(此即汉语簡化字),少数民族如壮族、维吾尔族、蒙古族、藏族、朝鲜族等拥有自己的文字。《中华人民共和国宪法";

//接下来是标准的Lucene建立索引和检索的代码
Directory ramDir = new RAMDirectory();
IndexWriter writer = new IndexWriter(ramDir, new StandardAnalyzer());
Document doc = new Document();
Field fd = new Field(FIELD_NAME, content, Field.Store.YES,
Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS);
doc.add(fd);
writer.addDocument(doc);
writer.optimize();
writer.close();

IndexReader reader = IndexReader.open(ramDir);
String queryString = QUERY;
QueryParser parser = new QueryParser(FIELD_NAME, new StandardAnalyzer());

Query query = parser.parse(queryString);
Searcher searcher = new IndexSearcher(ramDir);
System.out.println("Searching for: " + query.toString());
Hits hits = searcher.search(query);

}

当检索"共和国"时能够出来结果,但是检索"共和国123"时却无法得到结果,这是为什么呢?

是不是lucene并不支持真正的查询串解析,虽然提供了StandardAnalyzer(如QueryParser parser = new QueryParser(FIELD_NAME, new StandardAnalyzer());
)?

我真的很困惑,请求您能给我些指导。
luckaway 2009-05-18
本来就是这样的!
ppsddt 2009-05-18
Query query = parser.parse(queryString);
Searcher searcher = new IndexSearcher(ramDir);
System.out.println("Searching for: " + query.toString());
Hits hits = searcher.search(query);

上面的是你的代码:
Query query = parser.parse(queryString);
//通过对你输入的关键词分词后在来索引
String s = query.toString();
//这个10要根据你自己的query.toString()返回的值来确定
String srt = s.subString(10,s.length()-1);
query = parser.parse(srt);


Searcher searcher = new IndexSearcher(ramDir);
System.out.println("Searching for: " + query.toString());
Hits hits = searcher.search(query);
Global site tag (gtag.js) - Google Analytics