猿问

lucene搜索问题?

使用IKAnalyzer作为分词器,在索引中写入如下两个域:
TextField field1 = new TextField("content","hello你好",Store.YES);
TextField field2 = new TextField("content","Yello你好",Store.YES);

在搜索的时候
Term term = new Term("content", "Yello你好"); 
TermQuery termQuery = new TermQuery(term); //搜索不到

Term term = new Term("content", "Y*");
WildcardQuery wildcardQuery = new WildcardQuery(term);//搜索不到

String params ="(content:"+"Y*)";
QueryParser parser = new QueryParser(params, new IKAnalyzer());
Query query = parser.parse(params);//能搜索到,结果是""hello你好"

求解释一下为什么前两个query搜索不到,而第三个搜索到的是错的? 怎么修改才能查找到正确的结果

慕桂英4014372
浏览 884回答 1
1回答

饮歌长啸

创建索引时,因为是TextField,所以会进行分词,IKAnalyzer把Yello你好会分成Yello和你好,所以你第一个termQuery搜索不到信息。改成new Term("content", "你好")或new Term("content", "yello")就能搜索到了StringField是不分词的
随时随地看视频慕课网APP
我要回答