lucene搜索问题
使用IKAnalyzer作为分词器,在索引中写入如下两个域:TextFieldfield1=newTextField("content","hello你好",Store....
使用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搜索不到,而第三个搜索到的是错的? 怎么修改才能查找到正确的结果 展开
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搜索不到,而第三个搜索到的是错的? 怎么修改才能查找到正确的结果 展开
2个回答
展开全部
追问
现在的问题是搜索出来的结果为什么是错的,按照你给的提示我用以下的代码去搜索
Term term = new Term("content", "hello");
搜索的结果居然是 "Yello你好"
使用"你好"作为关键字搜索的结果也是"Yello你好"
还有你看第三个 我用表达式("content:Y*")来搜索是不是应该搜索出"Yello你好"而不是"hello你好"
2018-03-05
引用1039725910的回答:
创建索引时,因为是TextField,所以会进行分词,IKAnalyzer把Yello你好会分成Yello和你好,所以你第一个termQuery搜索不到信息。改成new Term("content", "你好")
或new Term("content", "yello")就能搜索到了
StringField是不分词的
创建索引时,因为是TextField,所以会进行分词,IKAnalyzer把Yello你好会分成Yello和你好,所以你第一个termQuery搜索不到信息。改成new Term("content", "你好")
或new Term("content", "yello")就能搜索到了
StringField是不分词的
展开全部
虽然这个问题过去很久了,但是给后来的人解释下----第三个 用表达式("content:Y*")来搜索是不是应该搜索出"Yello你好"而不是"hello你好"----那是因为 你给content设置了两个值啊,一个field1一个field2,分词名称都是content
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询