2015-04-13 3 views
0

У меня есть Elasticsearch 1,5 работает на моем сервере,Как использовать стопслов elasticsearch

В частности, я хочу/создать три поля с является

1.name

2.Описание

3.nickname

Я хочу установить временное слово для описания и поля ник, когда я вставляю данные в Elasticsearch, а затем останавливаю слово автоматически удалять ненужные ed stopword. Я пытаюсь так много времени, но не работаю.

curl -X POST http://127.0.0.1:9200/tryoindex/ -d' 
{ 
    "settings": { 
    "analysis": { 
     "filter": { 
     "custom_english_stemmer": { 
      "type": "stemmer", 
      "name": "english" 
     }, 
     "snowball": { 
      "type" : "snowball", 
      "language" : "English" 
       } 
     }, 
     "analyzer": { 
     "custom_lowercase_stemmed": { 
      "tokenizer": "standard", 
      "filter": [ 
      "lowercase", 
      "custom_english_stemmer", 
      "snowball" 
      ] 
     } 
     } 
    } 
    }, 
    "mappings": { 
    "test": { 
    "_all" : {"enabled" : true}, 
     "properties": { 
     "text": { 
      "type": "string", 
      "analyzer": "custom_lowercase_stemmed" 
     } 
     } 
    } 
    } 
}' 

curl -X POST "http://localhost:9200/tryoindex/nama/1" -d '{ 
    "text" : "Tryolabs running monkeys KANGAROOS and jumping elephants jum is your" 
}' 

curl "http://localhost:9200/tryoindex/nama/_search?pretty=1" -d '{ 
"query": { 
    "query_string": { 
     "query": "Tryolabs running monkeys KANGAROOS and jumping elephants jum is your", 
     "fields": ["text"] 
    } 
    } 
}' 

ответ

1

Изменить анализатор части к

"analyzer": { 
    "custom_lowercase_stemmed": { 
     "tokenizer": "standard", 
     "filter": [ 
     "stop", 
     "lowercase", 
     "custom_english_stemmer", 
     "snowball" 
     ] 
    } 
    } 

Для проверки изменений используйте

curl -XGET 'localhost:9200/tryoindex/_analyze?analyzer=custom_lowercase_stemmed' -d 'testing this is stopword testing' 

и наблюдать лексем

{"tokens":[{"token":"test","start_offset":0,"end_offset":7,"type":"<ALPHANUM>","position":1},{"token":"stopword","start_offset":16,"end_offset":24,"type":"<ALPHANUM>","position":4},{"token":"test","start_offset":25,"end_offset":32,"type":"<ALPHANUM>","position":5}]}% 

PS: Если вы не хотите, чтобы получить а затем удалите фильтрующие фильтры.

+0

все еще такой же, когда открыта elasticsearch_plugin head и просматривает данные, я вижу, что слово stop все еще существует ... –

+0

ответ отредактирован с помощью шагов проверки. – monu

+0

Возможно, я ошибаюсь в вопросе о прекращении слова, я уже сделал тот шаг, который вы упомянули, и я получил тот же токен, что и у вас, но почему данные все те же, что и слово «удалить», «стоп-лосс» должен удалить слово «обряд»? Вы понимаете? –

0

Вам необходимо использовать stop token filter в цепи фильтра анализатора.

+0

Что вы подразумеваете под цепью? это то, что я хочу сделать 1.i хочу вставить этот текст в ES «тестирование этого теста на стоп-лосс» 2.after insert, я хочу, чтобы все слово остановки «это» «было автоматически удалено, а оставшееся внутри «тестирование тестирования после остановки», кстати, это токен-токен? –

Смежные вопросы