常用 grams 符号过滤器
编辑常用 grams 符号过滤器编辑
为一组指定的常用词生成二元语法。
例如,您可以指定 is
和 the
作为常用词。然后,此过滤器会将符号 [the, quick, fox, is, brown]
转换为 [the, the_quick, quick, fox, fox_is, is, is_brown, brown]
。
当您不想完全忽略常用词时,可以使用 common_grams
过滤器代替停用词过滤器。
此过滤器使用 Lucene 的CommonGramsFilter。
示例编辑
以下分析 API 请求为 is
和 the
创建二元语法
response = client.indices.analyze( body: { tokenizer: 'whitespace', filter: [ { type: 'common_grams', common_words: [ 'is', 'the' ] } ], text: 'the quick fox is brown' } ) puts response
GET /_analyze { "tokenizer" : "whitespace", "filter" : [ { "type": "common_grams", "common_words": ["is", "the"] } ], "text" : "the quick fox is brown" }
该过滤器生成以下符号
[ the, the_quick, quick, fox, fox_is, is, is_brown, brown ]
添加到分析器编辑
以下创建索引 API 请求使用 common_grams
过滤器来配置新的自定义分析器
response = client.indices.create( index: 'common_grams_example', body: { settings: { analysis: { analyzer: { index_grams: { tokenizer: 'whitespace', filter: [ 'common_grams' ] } }, filter: { common_grams: { type: 'common_grams', common_words: [ 'a', 'is', 'the' ] } } } } } ) puts response
PUT /common_grams_example { "settings": { "analysis": { "analyzer": { "index_grams": { "tokenizer": "whitespace", "filter": [ "common_grams" ] } }, "filter": { "common_grams": { "type": "common_grams", "common_words": [ "a", "is", "the" ] } } } } }
可配置参数编辑
-
common_words
-
(必填*,字符串数组)符号列表。该过滤器为这些符号生成二元语法。
此参数或
common_words_path
参数是必需的。 -
common_words_path
-
(必填*,字符串)包含符号列表的文件的路径。该过滤器为这些符号生成二元语法。
此路径必须是绝对路径或相对于
config
位置的路径。该文件必须采用 UTF-8 编码。文件中的每个符号必须用换行符分隔。此参数或
common_words
参数是必需的。 -
ignore_case
- (可选,布尔值)如果为
true
,则匹配常用词时不区分大小写。默认为false
。 -
query_mode
-
(可选,布尔值)如果为
true
,则该过滤器会从输出中排除以下符号- 常用词的单元语法
- 后跟常用词的词语的单元语法
默认为
false
。我们建议为搜索分析器启用此参数。例如,您可以启用此参数并将
is
和the
指定为常用词。此过滤器会将符号[the, quick, fox, is, brown]
转换为[the_quick, quick, fox_is, is_brown,]
。
自定义编辑
要自定义 common_grams
过滤器,请复制它以创建新的自定义符号过滤器的基础。您可以使用其可配置参数修改该过滤器。
例如,以下请求创建了一个自定义的 common_grams
过滤器,其中 ignore_case
和 query_mode
设置为 true
response = client.indices.create( index: 'common_grams_example', body: { settings: { analysis: { analyzer: { index_grams: { tokenizer: 'whitespace', filter: [ 'common_grams_query' ] } }, filter: { common_grams_query: { type: 'common_grams', common_words: [ 'a', 'is', 'the' ], ignore_case: true, query_mode: true } } } } } ) puts response
PUT /common_grams_example { "settings": { "analysis": { "analyzer": { "index_grams": { "tokenizer": "whitespace", "filter": [ "common_grams_query" ] } }, "filter": { "common_grams_query": { "type": "common_grams", "common_words": [ "a", "is", "the" ], "ignore_case": true, "query_mode": true } } } } }