ユニークトークンフィルター

ストリームから重複トークンを削除します。たとえば、uniqueフィルターを使用してthe lazy lazy dogthe lazy dogに変更できます。

  1. `````only_on_same_position``````````true`````の場合、`````unique`````フィルターは[`````remove_duplicates`````](/read/elasticsearch-8-15/1e4737fca16e00cc.md)フィルターと同じように機能します。
  2. ## 例
  3. 次の[分析API](/read/elasticsearch-8-15/1a51b9d359d8a54c.md)リクエストは、`````unique`````フィルターを使用して`````the quick fox jumps the lazy fox`````から重複トークンを削除します:
  4. #### Python
  5. ``````python
  6. resp = client.indices.analyze(
  7. tokenizer="whitespace",
  8. filter=[
  9. "unique"
  10. ],
  11. text="the quick fox jumps the lazy fox",
  12. )
  13. print(resp)
  14. `

Ruby

  1. response = client.indices.analyze(
  2. body: {
  3. tokenizer: 'whitespace',
  4. filter: [
  5. 'unique'
  6. ],
  7. text: 'the quick fox jumps the lazy fox'
  8. }
  9. )
  10. puts response

Js

  1. const response = await client.indices.analyze({
  2. tokenizer: "whitespace",
  3. filter: ["unique"],
  4. text: "the quick fox jumps the lazy fox",
  5. });
  6. console.log(response);

コンソール

  1. GET _analyze
  2. {
  3. "tokenizer" : "whitespace",
  4. "filter" : ["unique"],
  5. "text" : "the quick fox jumps the lazy fox"
  6. }

フィルターはthefoxの重複トークンを削除し、次の出力を生成します:

テキスト

  1. [ the, quick, fox, jumps, lazy ]

アナライザーに追加

次のインデックス作成APIリクエストは、uniqueフィルターを使用して新しいカスタムアナライザーを構成します。

Python

  1. resp = client.indices.create(
  2. index="custom_unique_example",
  3. settings={
  4. "analysis": {
  5. "analyzer": {
  6. "standard_truncate": {
  7. "tokenizer": "standard",
  8. "filter": [
  9. "unique"
  10. ]
  11. }
  12. }
  13. }
  14. },
  15. )
  16. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'custom_unique_example',
  3. body: {
  4. settings: {
  5. analysis: {
  6. analyzer: {
  7. standard_truncate: {
  8. tokenizer: 'standard',
  9. filter: [
  10. 'unique'
  11. ]
  12. }
  13. }
  14. }
  15. }
  16. }
  17. )
  18. puts response

Js

  1. const response = await client.indices.create({
  2. index: "custom_unique_example",
  3. settings: {
  4. analysis: {
  5. analyzer: {
  6. standard_truncate: {
  7. tokenizer: "standard",
  8. filter: ["unique"],
  9. },
  10. },
  11. },
  12. },
  13. });
  14. console.log(response);

コンソール

  1. PUT custom_unique_example
  2. {
  3. "settings" : {
  4. "analysis" : {
  5. "analyzer" : {
  6. "standard_truncate" : {
  7. "tokenizer" : "standard",
  8. "filter" : ["unique"]
  9. }
  10. }
  11. }
  12. }
  13. }

設定可能なパラメーター

  • only_on_same_position
  • (オプション、ブール値)trueの場合、同じ位置の重複トークンのみを削除します。デフォルトはfalseです。

カスタマイズ

  1. たとえば、次のリクエストは`````unique`````フィルターを`````only_on_same_position``````````true`````に設定して作成します。
  2. #### Python
  3. ``````python
  4. resp = client.indices.create(
  5. index="letter_unique_pos_example",
  6. settings={
  7. "analysis": {
  8. "analyzer": {
  9. "letter_unique_pos": {
  10. "tokenizer": "letter",
  11. "filter": [
  12. "unique_pos"
  13. ]
  14. }
  15. },
  16. "filter": {
  17. "unique_pos": {
  18. "type": "unique",
  19. "only_on_same_position": True
  20. }
  21. }
  22. }
  23. },
  24. )
  25. print(resp)
  26. `

Ruby

  1. response = client.indices.create(
  2. index: 'letter_unique_pos_example',
  3. body: {
  4. settings: {
  5. analysis: {
  6. analyzer: {
  7. letter_unique_pos: {
  8. tokenizer: 'letter',
  9. filter: [
  10. 'unique_pos'
  11. ]
  12. }
  13. },
  14. filter: {
  15. unique_pos: {
  16. type: 'unique',
  17. only_on_same_position: true
  18. }
  19. }
  20. }
  21. }
  22. }
  23. )
  24. puts response

Js

  1. const response = await client.indices.create({
  2. index: "letter_unique_pos_example",
  3. settings: {
  4. analysis: {
  5. analyzer: {
  6. letter_unique_pos: {
  7. tokenizer: "letter",
  8. filter: ["unique_pos"],
  9. },
  10. },
  11. filter: {
  12. unique_pos: {
  13. type: "unique",
  14. only_on_same_position: true,
  15. },
  16. },
  17. },
  18. },
  19. });
  20. console.log(response);

コンソール

  1. PUT letter_unique_pos_example
  2. {
  3. "settings": {
  4. "analysis": {
  5. "analyzer": {
  6. "letter_unique_pos": {
  7. "tokenizer": "letter",
  8. "filter": [ "unique_pos" ]
  9. }
  10. },
  11. "filter": {
  12. "unique_pos": {
  13. "type": "unique",
  14. "only_on_same_position": true
  15. }
  16. }
  17. }
  18. }
  19. }