常用词元过滤器
编辑常用词元过滤器
编辑为一组指定的常用词生成二元词组。
例如,您可以指定 is
和 the
作为常用词。然后,此过滤器将词元 [the, quick, fox, is, brown]
转换为 [the, the_quick, quick, fox, fox_is, is, is_brown, brown]
。
当您不想完全忽略常用词时,可以使用 common_grams
过滤器来代替停用词元过滤器。
此过滤器使用 Lucene 的 CommonGramsFilter。
示例
编辑以下 analyze API 请求为 is
和 the
创建二元词组
resp = client.indices.analyze( tokenizer="whitespace", filter=[ { "type": "common_grams", "common_words": [ "is", "the" ] } ], text="the quick fox is brown", ) print(resp)
response = client.indices.analyze( body: { tokenizer: 'whitespace', filter: [ { type: 'common_grams', common_words: [ 'is', 'the' ] } ], text: 'the quick fox is brown' } ) puts response
const response = await client.indices.analyze({ tokenizer: "whitespace", filter: [ { type: "common_grams", common_words: ["is", "the"], }, ], text: "the quick fox is brown", }); console.log(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
过滤器来配置新的自定义分析器
resp = client.indices.create( index="common_grams_example", settings={ "analysis": { "analyzer": { "index_grams": { "tokenizer": "whitespace", "filter": [ "common_grams" ] } }, "filter": { "common_grams": { "type": "common_grams", "common_words": [ "a", "is", "the" ] } } } }, ) print(resp)
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
const response = await client.indices.create({ index: "common_grams_example", settings: { analysis: { analyzer: { index_grams: { tokenizer: "whitespace", filter: ["common_grams"], }, }, filter: { common_grams: { type: "common_grams", common_words: ["a", "is", "the"], }, }, }, }, }); console.log(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
resp = client.indices.create( index="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 } } } }, ) print(resp)
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
const response = await client.indices.create({ index: "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, }, }, }, }, }); console.log(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 } } } } }