我正在写一个用于搜索代码的搜索工具,但是我很难找到合适的分析器来使用。我曾尝试做一个空格分析器,但最终会遇到问题,其中可能包含dbo.My_Procedure
,搜索“my_procedure”应该与搜索“.My_Procedure”一样有效。我的想法是分割特殊字符,但也将它们存储到自己的 token 中。但是,如果您将my_procedure编写为搜索,则除非在文件中用引号引起来,否则它将只在文件中的任意位置查找我,_和过程(即使对于用户而言,它看起来就像一个字)。人们采取了什么方法来分析代码?
最佳答案
如果您的代码使用Java,则根据Java命名约定,您的方法和类应为驼峰式,因此您不应碰到诸如my_search
之类的名称,而应遇到mySearch
之类的名称。
如果是这样,您可以使用(默认)standard analyzer,它使用单词边界作为分隔符。
就是说,如果没有办法解决,并且您必须在标记化部分考虑诸如my_search
之类的名称,则可以实现自己的custom analyzer。
This answer显示了设置自定义分析器的示例。
关于elasticsearch - ElasticSearch用来搜索代码的分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30219297/