如何使用 ElasticSearch 索引源代码

Posted

技术标签:

【中文标题】如何使用 ElasticSearch 索引源代码【英文标题】:How to index source code with ElasticSearch 【发布时间】:2011-12-09 11:30:15 【问题描述】:

我需要对 javascript 源文件提供全文搜索并突出显示结果。

我的问题是现有的 ElasticSearch 分词器和分析器的哪种组合最适合这个?

【问题讨论】:

【参考方案1】:

除非您想将此作为服务公开给某人,否则我建议您在 eclipse 中安装 InstaSearch 插件;此插件创建 lucense 索引并为您提供即时结果。

【讨论】:

【参考方案2】:

您可以使用attachment type plugin 将文件加载到 Elasticsearch 并让它索引文件。它可以处理文件的元数据并索引文件的内容。

github page 包含有关如何突出显示搜索文档的信息。

【讨论】:

【参考方案3】:

有趣的问题,但我不知道开箱即用的解决方案。您可以使用 WordDelimiter 标记器,因为您可以指定例如下划线作为数字处理,然后像 hello_world(或 helloWorld,如果启用了驼峰式大小写)之类的函数将可以通过 hello 或 world 进行搜索。

但我怀疑结果是否足够......您必须实现 source code analyzer yourself 或使用代码 which extracts the syntax tree 将方法名称和主体索引到不同的字段中

【讨论】:

作为一名搜索源代码的开发人员,您真的想用“hello”或“world”找到 hello_world 或 helloWorld?至少在我们的例子中,我们对所有代码存储库进行了弹性搜索,并且我们通常在所有代码存储库中搜索特定方法的特定拼写 - 例如在更新它们都使用的核心框架时。

以上是关于如何使用 ElasticSearch 索引源代码的主要内容,如果未能解决你的问题,请参考以下文章

Laravel快速使用Elasticsearch

「必备技能」Elasticsearch索引全生命周期管理(附代码)

如何使用 Pyspark 和 Dataframes 查询 Elasticsearch 索引

如何使用 NEST 更新 ElasticSearch 索引中的现有文档?

ElasticSearch java 如何更改索引最大查询窗口(max_result_window)

PHP 如何使用 Elasticsearch 的 索引 API 接口