为了增强从弹性搜索中获得的搜索结果,我想从我的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”, “那个”,“那个”,“他们的”,“然后”,“那里”,“这些”, “他们”,“这个”,“到”,“是”,“将”,“与”
但我想增加这个库。
答案 0 :(得分:1)
你走在正确的轨道上。在您的第一个列表(from the documentation about stopwords)中,您为名为my_analyzer
的索引创建了一个名为my_index
的自定义分析器,它将删除“和”和< em>使用my_analyzer
的文本中的“the”。
现在要实际使用它,你应该:
my_analyzer
(questionindex
?)my_analyzer
的文档创建映射(例如question_title
字段):使用Analyze API
测试您的分析仪 GET /questionindex/_analyze?field=question.question_title&text=No quick brown fox jumps over my lazy dog and the indolent cat
重新索引文档
以此为出发点:
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"
}
}
}
}
}