in particolare, voglio indicizzare tutto (ad es. Chi) con l'elenco di parole senza stop. La ricerca elastica è abbastanza flessibile e abbastanza facile da cambiare?Posso personalizzare la ricerca elastica per utilizzare il mio elenco di parole di arresto?
risposta
Sì, è possibile farlo utilizzando il file YAML di configurazione interna di ElasticSearch.
Vedere config docs per come modificare le impostazioni dell'analizzatore.
Per impostazione predefinita, l'uso di analizzatore elasticsearch è un standard analyzer con le parole d'ordine inglesi Lucene predefinite. Ho configurato elasticsearch per utilizzare lo stesso analizzatore ma senza parole d'ordine aggiungendo quanto segue al file elasticsearch.yml.
# Index Settings
index:
analysis:
analyzer:
# set standard analyzer with no stop words as the default for both indexing and searching
default:
type: standard
stopwords: _none_
È possibile ignorare analizzatore di default a livello globale e disattivare il filtro stopword aggiungendo queste righe al elasticsearch.yml:
index.analysis.analyzer.default:
type: custom
tokenizer: standard
filter: standard, lowercase
questo modo si crea un analizzatore personalizzato con il tokenizzatore standard e due filtri: standard e minuscolo. In questo modo il tuo analizzatore personalizzato sarà identico all'analizzatore standard ma non utilizzerà il filtro stopword. Poiché è denominato "predefinito", elasticsearch lo utilizzerà ovunque dove l'analizzatore non è impostato in modo esplicito.
Certo che puoi. Usa stopwords_path in forma di stopword. per ulteriori informazioni http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-stop-analyzer.html
Questa è in realtà la risposta migliore che ho visto a questa domanda, in quanto rimuove il filtro stopword e quindi rende il codice più compatto. –