in app/addons/search/reducers.js [95:141]
function initEditSearch (state, { database, designDocs, ddocID, indexName }) {
const ddoc = designDocs.find(ddoc => {
return ddoc.id === ddocID;
}).dDocModel();
// the selected analyzer returned in the ddoc can be applied to both the single analyzer and the default multiple
// analyzer. We store them separately in the store so those values don't change when toggling from Single to Multiple
const analyzer = ddoc.getAnalyzer(indexName);
let newSingleAnalyzer;
if (_.isString(analyzer)) {
newSingleAnalyzer = analyzer;
} else {
if (_.has(analyzer, 'default')) {
newSingleAnalyzer = analyzer.default;
} else {
newSingleAnalyzer = Constants.DEFAULT_ANALYZER;
}
}
const newAnalyzerFields = [];
if (analyzer && analyzer.fields) {
Object.keys(analyzer.fields).forEach(fieldName => {
newAnalyzerFields.push({
key: getUniqueKey(),
fieldName: (fieldName) ? fieldName : '',
analyzer: analyzer.fields[fieldName],
valid: !_.isUndefined(fieldName) && !_.isEmpty(fieldName)
});
});
}
return {
loading: false,
searchPerformed: false,
database: database,
designDocs: designDocs,
searchIndexName: indexName,
ddocName: ddocID,
lastSavedSearchIndexName: indexName,
lastSavedDesignDocName: ddocID,
searchIndexFunction: ddoc.getIndex(indexName),
analyzerType: ddoc.analyzerType(indexName),
// this either returns a simple string (single) or a complex object (multiple)
singleAnalyzer: newSingleAnalyzer,
defaultMultipleAnalyzer: newSingleAnalyzer,
analyzerFields: newAnalyzerFields
};
}