当前位置: 首页 > 知识库问答 >
问题:

Eclipse JDT: Java搜索引擎

岳浩宕
2023-03-14

我需要在工作区的所有项目的源目录中找到所有Java类型(类、接口、枚举、注释),名称为字符串。例如,输入“测试”将返回所有项目源目录中以“测试”开头的所有Java类型。我试图用JDT的搜索引擎处理这个问题,如下所示

SearchPattern pattern = SearchPattern.createPattern("Test",
            IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS,
            SearchPattern.R_PREFIX_MATCH);
IJavaSearchScope scope = SearchEngine.createWorkspaceScope();
SearchRequestor requestor = new SearchRequestor() {
        public void acceptSearchMatch(SearchMatch match) {
            System.out.println("Found: " + match.getElement());
        }
};
SearchEngine searchEngine = new SearchEngine();
try {
        searchEngine.search(pattern, new SearchParticipant[] { SearchEngine
                        .getDefaultSearchParticipant() }, scope, requestor,
                        null);
} catch (CoreException e) {
        e.printStackTrace();
}

上面的代码返回了一些不在Eclipse工作区中的java类型。例如:

找到:TestSimple(未打开)[在TestSimple.class[在

TestSimple.java是我的主目录中从命令行创建的文件,它与 Eclipse 项目无关。(我的 Eclipse 工作区在 /home/me/eclipse/工作区中定义。我不确定为什么它被包含在搜索结果中?SearchEngine是否是处理这种情况的最佳方法,鉴于我只需要java类型名称,我不需要类中的任何内容,例如字段,方法或引用?谢谢

共有1个答案

张高义
2023-03-14

那么,您可能希望构建一个更有限的搜索范围,向每个IJavaProject询问其所有包片段根(IJavaProject#getAllPackageFragmentRoots()),并仅包括从IPackageFragmentRoot#getKind()返回K_SOURCE的那些,以避免从引用的库中获取类型。只搜索名称应该只搜索已经存储的索引。您不能只依赖文件名,因为它会完全错过内部类。

 类似资料:
  • 搜索引擎分为两部分: 时间筛选 和 搜索引擎 (详情) 1.时间筛选 便捷按钮有今日、昨日、前日、上周 X、近七天,并且能自定义选择时间段来得出想要的结果报表 2.搜索引擎 (时间段详情) 选择日期,查看来自对应时间段内,各个搜索引擎的访问量比例

  • 我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!

  • lucene 和 es 的前世今生 lucene 是最先进、功能最强大的搜索库。如果直接基于 lucene 开发,非常复杂,即便写一些简单的功能,也要写大量的 Java 代码,需要深入理解原理。 elasticsearch 基于 lucene,隐藏了 lucene 的复杂性,提供了简单易用的 restful api / Java api 接口(另外还有其他语言的 api 接口)。 分布式的文档存储

  • 搜索引擎 关键参数 报告 method metrics(指标, 数据单位) 其他参数 搜索引擎 source/engine/a pv_count (浏览量(PV)) pv_ratio (浏览量占比,%) visit_count (访问次数) visitor_count (访客数(UV)) new_visitor_count (新访客数) new_visitor_ratio (新访客比率,%) ip

  • 更改历史 * 2018-05-07 胡小根 初始化文档 1 历史、现状和发展 1.1 历史 1.2 现状 1.3 发展 难点:预测发展方向。 2 安装和使用 2.1 安装 2.2 使用 创建index和type 上传单条数据 批量上传数据 查询 2.3 示例 2.4 最佳实践 难点:最佳实践,超出于示例,应该归纳总结出积累的技巧。 3 同类技术对比 难点:归纳比对项 参考资料 El

  • 元搜索引擎 原搜索引擎是通过一个统一的用户界面帮助用户在多个搜索引擎中选择和利用合适的搜索引擎来实现检索操作,是对分布于网络的多种检索工具的全局控制机制。 自己没搜索引擎,又想要大规模的数据源,怎么办?可以对百度搜索和谷歌搜索善加利用,以小搏大,站在巨人的肩膀上。有很多的应用场景可以很巧妙地借助百度搜索和谷歌搜索来实现,比如网站的新闻采集,比如技术、品牌的新闻跟踪,比如知识库的收集,比如人机问答系

  • 我使用< code > Hibernate Search 4 . 5 . 1 编写了< code>Spring web-app。当我尝试搜索时,它返回一个条目列表。我认为索引中的问题。用于索引的目录已创建,但实体保存文件后,目录中的文件不变。 这是我的Spring配置文件 我的实体文件

  • bugu-mongo 2.x版本集成了Lucene的功能。当往MongoDB中新增一个Document时,能自动为该Document建立Lucene索引。相应的,当MongoDB中的Document被修改、删除时,对应的Lucene索引也会修改、删除。 另外,bugu-mongo还提供了对Lucene搜索的支持。根据Lucene索引进行搜索的时候,搜索结果能自动转换成对应的Entity对象。 在L