我目前正在使用ElasticSearch 5.5尽快搜索源文件。
问题是,我需要搜索确切的短语,但它可能只是其中的一部分。我搜索了整个谷歌,但无法找到其他类似的案例。
例如,如果源文件是"公共静态类ElasticMethods" 。 我需要能够搜索" ic静态类Elast" 。
我不确定应该使用什么样的分析仪。如果我使用标准分析仪,它会破坏文字的一部分。这是一个问题,因为我需要搜索确切的短语,因此即使源文件包含 public 或 static 和 class 等字词,如果它的顺序不完全相同则不匹配。
我之后尝试使用关键字分析器,但关键字的问题在于,一个术语不能超过32kb,这是我的大部分资源都有的。
如果有人可以提供帮助,我会很感激。
这是我尝试过的映射之一。
PUT /my_index?pretty
{
"mappings": {
"programa": {
"properties": {
"tFSPath": {
"type": "text",
"analyzer": "keyword"
},
"fileName": {
"type": "text",
"analyzer": "keyword"
},
"data": {
"type": "text",
"analyzer": "keyword"
}
}
}
}
}
文档示例:
PUT /my_index/programa/2
{
"tFSPath": "$/Projects/AuthAPI/AuthAPI/Controllers/HomeController.cs",
"fileName:" : "HomeController.cs",
"data": "using System.Web.Mvc; namespace AuthAPI.Controllers { public class HomeController : Controller { public ActionResult Index() { ViewBag.Title = \"Home Page\"; return View(); } } }"
}
让我最接近我需要的查询:
POST my_index/_search
{
"query": {
"regexp":{
"data": ".*\"public ActionResult Index\".*"
}
}
}
在上面的示例中," ic ActionResult Ind" 将匹配,但" Index ActionResult public" woulnd&# 39;吨。这就是我的需要。