使用java

时间:2015-07-25 11:22:39

标签: java elasticsearch

为了增强从弹性搜索中获得的搜索结果,我想从我的java代码中增加我的停止词库。到目前为止,我正在使用默认的停止分析器列表,它没有像What,Who,Why等列表中的疑问词。我们想在查询结果时从搜索中删除这些词和一些额外的词。 我从这里尝试了代码(最后一个ans)tried

PUT /my_index
{
"settings": {
"analysis": {
  "analyzer": {
    "my_analyzer": { 
      "type": "standard", 
      "stopwords": [ "and", "the" ] 
    }
  }
}

} }

此代码在java。 但它并没有为我工作。 重要查询

如何创建我们自己的停用词列表以及如何在我们的查询代码中实现它

QueryStringQueryBuilder qb=new QueryStringQueryBuilder(text).analyzer("stop");
            qb.field("question_title");
            qb.field("level");
            qb.field("category");
            qb.field("question_tags");
            SearchResponse response = client.prepareSearch("questionindex")
            .setSearchType(SearchType.QUERY_AND_FETCH)
            .setQuery(qb)
            .execute()
            .actionGet();
            SearchHit[] results = response.getHits().getHits();
            System.out.println("respose-"+results.length);

目前我正在使用默认停止分析器。这只是停止像

这样有限的停止词

“a”,“an”,“and”,“are”,“as”,“at”,“be”,“but”,“by”,       “for”,“if”,“in”,“into”,“is”,“it”,       “no”,“not”,“of”,“on”,“or”,“such”,       “那个”,“那个”,“他们的”,“然后”,“那里”,“这些”,       “他们”,“这个”,“到”,“是”,“将”,“与”

但我想增加这个库。

1 个答案:

答案 0 :(得分:1)

你走在正确的轨道上。在您的第一个列表(from the documentation about stopwords)中,您为名为my_analyzer的索引创建了一个名为my_index的自定义分析器,它将删除“和”和< em>使用my_analyzer的文本中的“the”。

现在要实际使用它,你应该:

  1. 确保您已对要查询的索引定义my_analyzerquestionindex?)
  2. 为您要删除“和”以及“the”的字段使用my_analyzer的文档创建映射(例如question_title字段):
  3. 使用Analyze API

    测试您的分析仪

    GET /questionindex/_analyze?field=question.question_title&text=No quick brown fox jumps over my lazy dog and the indolent cat

  4. 重新索引文档

  5. 以此为出发点:

    POST /questionindex
    {
        "settings" : {
            "analysis": {
                "analyzer": {
                    "my_analyzer": { 
                        "type": "standard", 
                        "stopwords": [ "and", "the" ] 
                    }
                }
            }
        },
        "mappings" : {
            "question" : {
                "properties" : {
                    "question_title" : { 
                        "type" : "string", 
                        "analyzer" : "my_analyzer" 
                    },
                    "level" : { 
                        "type" : "integer" 
                    },
                    "category" : { 
                        "type" : "string" 
                    },
                    "question_tags" : { 
                        "type" : "string" 
                    }
                }
            }
        }
    }