wty19 2014-07-23 07:58 采纳率: 0%
浏览 1245

lucene4.9 中文分词例子 失败

代码是这样的

    Directory directory = new RAMDirectory();
CharArraySet c = new  CharArraySet(Version.LUCENE_4_9, 1, true);
        c.add("#");
        IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_4_9,new SmartChineseAnalyzer(Version.LUCENE_4_9,c));

        IndexWriter indexWriter = new IndexWriter(directory,conf);
        Document doc=new Document();
        doc.add(new StringField("keyword","青菜#土豆#牛肉" ,Field.Store.YES ));
        doc.add(new StringField("id","1aaa" ,Field.Store.YES));
        indexWriter.addDocument(doc);  
        indexWriter.close();
Term term = new Term("keyword", "土豆");   
        AtomicReader atomicReader = SlowCompositeReaderWrapper.wrap(DirectoryReader.open(directory));
        IndexSearcher searcher = new IndexSearcher(atomicReader);
        TopDocs tdoc = searcher.search(new TermQuery(term), 10);
        System.out.println(tdoc.totalHits);
        for(ScoreDoc s : tdoc.scoreDocs){
            Document firstHit =  searcher.doc(s.doc);
           System.out.println(firstHit.getField("id").stringValue());
        }

但是搜!不!到!,只有 Term = "青菜#土豆#牛肉" 才能全部收到。那个SmartChineseAnalyzer 我看文档,传入c 是stop标签,难道我理解错了?求解

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-02-26 11:33
    关注

    该回答引用ChatGPT

    根据你提供的代码,索引文档中的 "keyword" 字段内容为 "青菜#土豆#牛肉",但是你搜索的时候却指定搜索 "土豆" 这个词条,这个词条在 "keyword" 字段中不存在,因此搜索结果为0。


    如果你想要搜索到包含 "土豆" 这个词的文档,可以将 "keyword" 字段的值改为 "青菜#土豆#牛肉"。此时,当你搜索 "土豆" 的时候,应该能够搜索到包含 "土豆" 的文档。


    另外,你在创建 SmartChineseAnalyzer 实例的时候,传入了一个 CharArraySet 对象作为参数。CharArraySet 中包含了一个 # 字符,这个字符会被 SmartChineseAnalyzer 作为停用词来过滤掉。因此,在你的例子中,"青菜#土豆#牛肉" 这个词条会被分成三个词:"青菜"、"土豆" 和 "牛肉"。如果你想保留 # 字符作为分隔符,可以将 CharArraySet 对象的第三个参数设为 false,即:

    CharArraySet c = new CharArraySet(Version.LUCENE_4_9, 1, false);
    c.add("#");
    IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_4_9, new SmartChineseAnalyzer(Version.LUCENE_4_9, c));
    

    这样做的话,"青菜#土豆#牛肉" 就会被作为一个整体进行分词。

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)