使用ElasticSearch进行源搜索

时间:2017-12-22 13:44:23

标签: elasticsearch indexing lucene elasticsearch-5

我目前正在使用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;吨。这就是我的需要。

0 个答案:

没有答案