6
回答
lucene 索引 不分词
注册华为云得mate10,2.9折抢先购!>>>   
lucene 对中文标题 进行索引 但不分词,检索的时候必须在中文标题加星号才能检索出来,有没有其他方法?
举报
共有6个答案 最后回答: 6年前

楼上就是一头猪,索引的内容怎么可能放在数据库呢,

 String path = "D:/apache-tomcat-5.5.17/webapps/glfc/files/luceneIndex";// 索引目录
  Directory dir = FSDirectory.open(new File(path));
  IndexSearcher search = new IndexSearcher(dir);
  Term term = new Term("body", "test");
  Query query = new TermQuery(term);
  Collection<Query> collection=new ArrayList<Query>();
  collection.add(query);
  TopDocs topDocs = search.search(query, 10);
  ScoreDoc[] hits = topDocs.scoreDocs;
//   正常产生的查询
  for (int i = 0; i < hits.length; i++) {
   Document doc = search.doc(hits[i].doc);
   System.out.println(doc.get("DESCRIPBE"));
  }

--- 共有 1 条评论 ---
Mr.CTBingo! :) 5年前 回复
用法的问题吧,你怎么用的
--- 共有 1 条评论 ---
喝奶的小猪Field titleField=new Field("title",textFiles[i].getName(),Store.YES,Index.NOT_ANALYZED);比如我的标题名为奋斗,检索的话必须“奋斗*”才检索出来 6年前 回复
Field filed = new Field("table",text,Field.Store.YES, Field.Index.ANALYZED)
--- 共有 3 条评论 ---
喝奶的小猪@张剑波 : 可能是我没有把意思说明白,因为业务要求有些关键字不需要分词,是什么就是什么,比如:关键字的内容为“上海浦东”,我们希望的结果是输入“上海浦东”才检索出来,可是不分词的话必须在“上海浦东”后面加个星号才能检索出来。就是看看有没有其他方式 6年前 回复
张剑波@邹二顺 : 中文分词器分词后搜索单个汉字绝大部分是搜不到的,如果你想搜索单个汉字就用自带的StandardAnalyze就行了,它是对单个汉字分词的~~ 6年前 回复
喝奶的小猪这个我试过,是可以,不过还是分词了。我是想不分词 6年前 回复

这种需求就不要用lucene了,你在数据库上加一个索引效果也是一样的

解决方案:

1. 后台拼接sql的时候,不带*的直接用 title='上海浦东' 搜索

2. 带* 的把* 替换成 % 用 title like '上海浦东%'

搜索不一定非要用lucene的,要确定是否需要分词的全文检索采用Lucene就算是用全文检索也不一定要用lucene的

顶部