E-Book, Englisch, 316 Seiten
Shahi Apache Solr
1. ed
ISBN: 978-1-4842-1070-3
Verlag: Apress
Format: PDF
Kopierschutz: 1 - PDF Watermark
A Practical Approach to Enterprise Search
E-Book, Englisch, 316 Seiten
ISBN: 978-1-4842-1070-3
Verlag: Apress
Format: PDF
Kopierschutz: 1 - PDF Watermark
Apache Solr: A Practical Approach to Enterprise Search teaches you how to build an enterprise search engine using Apache Solr. You'll soon learn how to index and search your documents; ingest data from varied sources; pre-process, transform and enrich your data; and build the processing pipeline.You will understand the concepts and internals of Apache Solr and tune the results for your client's search needs. The book explains each essential concept-backed by practical and industry examples-to help you attain expert-level knowledge.The book, which assumes a basic knowledge of Java, starts with an introduction to Solr, followed by steps to setting it up, indexing your first set of documents, and searching them. It then covers the end-to-end process of data ingestion from varied sources, pre-processing the data, transformation and enrichment of data, building the processing pipeline, query parsing, and scoring the document. It also teaches you how to make your system intelligent and able to learn through feedback loops.After covering out-of-the-box features, Solr expert Dikshant Shahi dives into ways you can customize Solr for your business and its specific requirements, along with ways to plug in your own components. Most important, you will learn to handle user queries and retrieve meaningful results. The book explains how each user query is different and how to address them differently to get the best result. And because document ranking doesn't work the same for all applications, the book shows you how to tune Solr for the application at hand and re-rank the results.You'll see how to influence user experience by providing suggestions and recommendations, and leveraging other interesting features of Solr. You'll also see how to integrate Solr with important related technologies like OpenNLP, Apache Tika, and Apache UIMA, among others, to take your search capabilities to the next level.This book concludes with case studies and industry examples, the knowledge of which will be helpful in designing components and putting the bits together. By the end of Apache Solr, you will be proficient in designing, architecting, and developing your search engine and be able to integrate it with other systems.
Dikshant Shahi manages the search and platforms team at OnMobile Global Limited. He has been responsible for developing several vertical search engines for categories including music metadata, voice, audio fingerprinting, channel intelligence, log file processing, building analytics, finding deals like Groupon etc. He has also been responsible for handling multi-lingual contents, natural language processing and recommendation. Shahi specializes in Search Engine, Information Retrieval, Data Extraction and Analysis, Application Development, Web Services, and Mobile Applications.
Autoren/Hrsg.
Weitere Infos & Material
1;Contents at a Glance;5
2;Contents;6
3;About the Author;17
4;About the Technical Reviewer;18
5;Acknowledgments;19
6;Introduction;20
7;Chapter 1: Apache Solr: An Introduction;22
7.1; Overview;22
7.2; What Makes Apache Solr So Popular;24
7.3; Major Building Blocks;25
7.4; History;25
7.5; What’s New in Solr 5. x;26
7.6; Beyond Search;26
7.7; Solr vs. Other Options;27
7.7.1; Relational Databases;27
7.7.2; Elasticsearch;28
7.8; Related Technologies;29
7.9; Summary;29
7.10; Resources;30
8;Chapter 2: Solr Setup and Administration;31
8.1; Stand-Alone Server;31
8.2; Prerequisites;32
8.3; Download;33
8.4; Terminology;33
8.4.1; General Terminology;33
8.4.2; SolrCloud Terminology;34
8.4.3; Important Configuration Files;35
8.5; Directory Structure;35
8.5.1; Solr Installation;36
8.5.2; Solr Home;39
8.6; Hands-On Exercise;40
8.6.1; Start Solr;40
8.6.2; Create a Core;42
8.6.3; Index Some Data;42
8.6.4; Search for Results;43
8.7; Solr Script;45
8.7.1; Starting Solr;45
8.7.2; Using Solr Help;46
8.7.3; Stopping Solr;46
8.7.4; Restarting Solr;47
8.7.5; Determining Solr Status;47
8.7.6; Configuring Solr Start;47
8.8; Admin Web Interface;48
8.9; Core Management;49
8.9.1; Config Sets;49
8.9.2; Create Configset;49
8.9.3; Create Core;50
8.9.3.1;bin/solr Script;51
8.9.3.2;Core Admin REST API;51
8.9.3.3;Admin Interface;52
8.9.3.4;Manually;52
8.9.4; Core Status;52
8.9.5; Unload Core;53
8.9.6; Delete Core;53
8.9.7; Core Rename;53
8.9.8; Core Swap;53
8.9.9; Core Split;54
8.9.10; Index Backup;54
8.9.11; Index Restore;54
8.10; Instance Management;55
8.10.1; Setting Solr Home;55
8.10.2; Memory Management;55
8.10.3; Log Management;56
8.10.3.1;Log Location;56
8.10.3.2;Log Level;56
8.10.3.3;Log Implementation;57
8.11; Common Exceptions;57
8.11.1; OutOfMemoryError—Java Heap Space;57
8.11.2; OutOfMemoryError—PermGen Space;57
8.11.3; TooManyOpenFiles;58
8.11.4; UnSupportedClassVersionException;58
8.12; Summary;58
9;Chapter 3: Information Retrieval;59
9.1; Introduction to Information Retrieval;59
9.2; Search Engines;60
9.3; Data and Its Categorization;61
9.3.1; Structured;61
9.3.2; Unstructured;61
9.3.3; Semistructured;62
9.4; Content Extraction;62
9.5; Text Processing;63
9.5.1; Cleansing and Normalization;64
9.5.2; Enrichment;64
9.5.3; Metadata Generation;65
9.6; Inverted Index;67
9.7; Retrieval Models;68
9.7.1; Boolean Model;68
9.7.2; Vector Space Model;69
9.7.3; Probabilistic Model;70
9.7.4; Language Model;70
9.8; Information Retrieval Process;70
9.8.1; Plan;71
9.8.1.1;Know the Vertical;71
9.8.1.2;Know the End User;71
9.8.1.3;Know the Content;72
9.8.1.4;Know the Medium;72
9.8.2; Execute;73
9.8.3; Evaluate;73
9.8.3.1;True Positive;73
9.8.3.2; False Positive;74
9.8.3.3; True Negative;74
9.8.3.4; False Negative;74
9.8.3.5;Evaluation Metrics;74
9.8.3.5.1;Accuracy;74
9.8.3.5.2;Precision and Recall;75
9.8.3.5.3;F-Measure;76
9.9; Summary;76
10;Chapter 4: Schema Design and Text Analysis;77
10.1; Schema Design;77
10.1.1; Documents;78
10.1.2; schema.xml File;78
10.1.3; Fields;79
10.1.3.1;Field Attributes;79
10.1.3.1.1;name;79
10.1.3.1.2;type;80
10.1.3.1.3;default;80
10.1.3.2;Reserved Field Names;80
10.1.4; fieldType;80
10.1.4.1;Implementation Class;81
10.1.4.2; fieldType Attributes;82
10.1.4.2.1;indexed;82
10.1.4.2.2;stored;83
10.1.4.2.3;required;83
10.1.4.2.4;multiValued;84
10.1.4.2.5;docValues;84
10.1.4.2.6;sortMissingFirst/sortMissingLast;84
10.1.4.2.7;positionIncrementGap;84
10.1.4.2.8;precisionStep;85
10.1.4.2.9;omitNorms;85
10.1.4.2.10;omitTermFreqAndPositions;85
10.1.4.2.11;omitPosition;85
10.1.4.2.12;termVectors;85
10.1.4.2.13;termPositions;85
10.1.4.2.14;termOffsets;86
10.1.4.2.15;termPayloads;86
10.1.4.3;Text Analysis, If Applicable;86
10.1.5; copyField;86
10.1.5.1;copyField Attributes;87
10.1.5.1.1;source;87
10.1.5.1.2;dest;87
10.1.5.1.3;maxChars;87
10.1.6; Define the Unique Key;87
10.1.7; Dynamic Fields;87
10.1.8; defaultSearchField;88
10.1.9; solrQueryParser;88
10.1.10; Similarity;89
10.2; Text Analysis;89
10.2.1; Tokens;92
10.2.2; Terms;92
10.2.3; Analyzers;93
10.2.3.1;Simple Analysis;93
10.2.3.2;Analysis Chain;93
10.2.4; Analysis Phases;93
10.2.4.1;Indexing;94
10.2.4.2; Querying;95
10.2.5; Analysis Tools;95
10.2.5.1;Solr Admin Console;95
10.2.5.2;Luke;96
10.2.6; Analyzer Components;96
10.2.6.1;CharFilters;97
10.2.6.2;Tokenizers;97
10.2.6.3;TokenFilters;97
10.2.7; Common Text Analysis Techniques;98
10.2.7.1;Synonym Matching;98
10.2.7.1.1;Parameters;98
10.2.7.2;Phonetic Matching;99
10.2.7.3;N-Grams;100
10.2.7.4;Shingling;101
10.2.7.4.1;Parameters;102
10.2.7.5;Stemming;102
10.2.7.5.1;KeywordMarkerFilter;104
10.2.7.5.2;StemmerOverrideFilter;104
10.2.7.6;Blacklist (Stop Words);105
10.2.7.7;Whitelist (Keep Words);106
10.2.7.8;Other Normalization;106
10.2.7.8.1;Lowercasing;106
10.2.7.8.2;Convert to Closest ASCII Character;107
10.2.7.8.3;Remove Duplicate Tokens;107
10.2.7.9;Multilingual Support;107
10.3; Going Schemaless;109
10.3.1; What Makes Solr Schemaless;109
10.3.1.1;Automatic Field Type Identification;109
10.3.1.2;Automatic Field Addition;110
10.3.1.3;Managed Schema and REST API;110
10.3.1.4;Dynamic Fields;110
10.3.2; Configuration;110
10.3.3; Limitations;112
10.4; REST API for Managing Schema;112
10.4.1; Configuration;113
10.4.2; REST Endpoints;113
10.4.3; Other Managed Resources;115
10.4.3.1;Usage Steps;115
10.5; solrconfig.xml File;115
10.6; Frequently Asked Questions;116
10.6.1; This section provides answers to some of the questions that developers often ask while defining schema.xml . How do I ha...;116
10.6.2; Why is my Schema Change Not Reflected in Solr?;116
10.6.3; I Have Created a Core in Solr 5.0, but Schema.xml is Missing. Where Can I find it?;116
10.7; Summary;116
11;Chapter 5: Indexing Data;118
11.1; Indexing Tools;119
11.1.1; Post Script;119
11.1.2; SimplePostTool;119
11.1.3; curl;119
11.1.4; SolrJ Java Library;120
11.1.5; Other Libraries;120
11.2; Indexing Process;120
11.2.1; UpdateRequestHandler;122
11.2.2; UpdateRequestProcessorChain;122
11.2.3; UpdateRequestProcessor vs. Analyzer/Tokenizer;124
11.3; Indexing Operations;124
11.3.1; XML Documents;124
11.3.1.1;Add;125
11.3.1.2;Update;126
11.3.1.3;Delete;127
11.3.1.4; Commit;127
11.3.1.4.1;Hard Commit;128
11.3.1.4.2;Soft Commit;128
11.3.1.5;Optimize;128
11.3.1.6;Rollback;129
11.3.2; JSON Documents;129
11.3.3; CSV Documents;130
11.3.4; Index Rich Documents;130
11.4; DataImportHandler;132
11.4.1;Import from RDBMS;132
11.5; Document Preprocessing;134
11.5.1; Language Detection;134
11.5.2; Generate Unique ID;135
11.5.3; Deduplication;136
11.5.4; Document Expiration;136
11.6; Indexing Performance;138
11.7; Custom Components;139
11.7.1; Custom UpdateRequestProcessor;139
11.8; Frequently Occurring Problems;141
11.8.1; Copying Multiple Fields to a Single-Valued Field;141
11.8.1.1;Document Is Missing Mandatory uniqueKey Field;142
11.8.1.2;Data Not Indexed;142
11.8.1.3;Indexing Is Slow;142
11.8.1.4;OutOfMemoryError—Java Heap Space;143
11.9; Summary;143
12;Chapter 6: Searching Data;144
12.1; Search Basics;144
12.2; Prerequisites;145
12.3; Solr Search Process;145
12.3.1; SearchHandler;146
12.3.1.1;Registered Components;146
12.3.1.2;Declare Parameters;148
12.3.1.2.1;defaults;148
12.3.1.2.2;appends;148
12.3.1.2.3;invariants;149
12.3.2; SearchComponent;149
12.3.3; QueryParser;150
12.3.4; QueryResponseWriter;151
12.4; Solr Query;151
12.4.1; Default Query;152
12.4.1.1;Query a Default Field;152
12.4.1.2;Query a Specified Field;152
12.4.1.3;Match Tokens in Multiple Fields;153
12.4.1.4;Query Operators;153
12.4.2; Phrase Query;153
12.4.3; Proximity Query;154
12.4.4; Fuzzy Query;154
12.4.5; Wildcard Query;155
12.4.6; Range Query;155
12.4.7; Function Query;156
12.4.8; Filter Query;156
12.4.9; Query Boosting;157
12.4.10; Global Query Parameters;157
12.4.10.1;q;157
12.4.10.2; fq;157
12.4.10.3; rows;157
12.4.10.4; start;157
12.4.10.5; def Type;158
12.4.10.6; sort;158
12.4.10.7; fl;158
12.4.10.8; wt;158
12.4.10.9; debugQuery;158
12.4.10.10;explainOther;158
12.4.10.11; timeAllowed;158
12.4.10.12; omitHeader;159
12.4.10.13; cache;159
12.5; Query Parsers;159
12.5.1; Standard Query Parser;159
12.5.2; DisMax Query Parser;159
12.5.2.1;Using the DisMax Query Parser;160
12.5.2.2;Query Parameters;160
12.5.2.2.1;q;160
12.5.2.2.2; qf;160
12.5.2.2.3; q.alt;160
12.5.2.2.4; mm;161
12.5.2.2.5; qs;161
12.5.2.2.6; pf;161
12.5.2.2.7; ps;162
12.5.2.2.8; tie;162
12.5.2.2.9; bq;162
12.5.2.2.10;bf;162
12.5.2.3;Sample DisMax Query;162
12.5.3; eDisMax Query Parser;163
12.5.3.1;lowercaseOperators;163
12.5.3.2;boost;164
12.5.3.3; pf2/pf3;164
12.5.3.4; ps2/ps3;164
12.5.3.5; stopwords;164
12.5.3.6; uf;164
12.5.3.7; alias;165
12.6; JSON Request API;165
12.7; Customizing Solr;167
12.7.1; Custom SearchComponent;168
12.7.1.1;Extend SearchComponent;168
12.7.1.2;Override the Abstract Methods;168
12.7.1.3;Get the Request and Response Objects;169
12.7.1.4;Add the JAR to the Library;169
12.7.1.5;Register to the Handler;169
12.7.2; Sample Component;169
12.7.2.1;Java Source Code;170
12.7.2.2;solrconfig.xml;171
12.7.2.3;Query;171
12.7.2.4; Response;171
12.8; Frequently Asked Questions;172
12.8.1; I have used KeywordTokenizerFactory in fieldType definition but why is my query string getting tokenized on whitespace?;172
12.8.2; How can I find all the documents that contain no value?;173
12.8.3; How can I apply negative boost on terms?;173
12.8.4; Which are the special characters in query string . How should they be handled?;173
12.9; Summary;173
13;Chapter 7: Searching Data: Part 2;174
13.1; Local Parameters;175
13.1.1; Syntax;175
13.1.1.1;Specifying the Query Parser;175
13.1.1.2;Specifying the Query Inside the LocalParams Section;175
13.1.1.3;Using Parameter Dereferencing;175
13.1.2; Example;175
13.2; Result Grouping;176
13.2.1; Prerequisites;176
13.2.2; Request Parameters;176
13.2.3; Example;178
13.3; Statistics;180
13.3.1; Request Parameters;180
13.3.2; Supported Methods;181
13.3.3; LocalParams;182
13.3.4; Example;182
13.4; Faceting;184
13.4.1; Prerequisites;185
13.4.1.1;Tokenization;185
13.4.1.2; Lowercasing;185
13.4.2; Syntax;186
13.4.2.1;JSON API;186
13.4.3; Example;186
13.4.4; Faceting Types;187
13.4.4.1;General Parameter;187
13.4.4.1.1;facet;187
13.4.4.2;Field Faceting;187
13.4.4.2.1;Specific Parameters;187
13.4.4.2.1.1;facet.field;187
13.4.4.2.1.2; facet.prefix;187
13.4.4.2.1.3; facet.contains;187
13.4.4.2.1.4; facet.contains.ignoreCase;187
13.4.4.2.1.5;facet. sort;187
13.4.4.2.1.6; facet.offset;188
13.4.4.2.1.7; facet.limit;188
13.4.4.2.1.8; facet.mincount;188
13.4.4.2.1.9; facet.missing;188
13.4.4.2.1.10;facet.method;188
13.4.4.2.1.11; facet.enum.cache.minDF;188
13.4.4.2.1.12; facet.threads;189
13.4.4.2.1.13; facet.overrequest.count;189
13.4.4.2.1.14; facet.overrequest.ratio;189
13.4.4.3; Query Faceting;189
13.4.4.3.1;Specific Parameters;189
13.4.4.3.1.1;facet.query;189
13.4.4.4; Range Faceting;189
13.4.4.4.1;Specific Parameters;190
13.4.4.4.1.1;facet.range;190
13.4.4.4.1.2; facet.range.start;190
13.4.4.4.1.3; facet.range.end;190
13.4.4.4.1.4; facet.range.gap;190
13.4.4.4.1.5; facet.range.hardend;190
13.4.4.4.1.6; facet.range.include;190
13.4.4.4.1.7; facet.range.other;191
13.4.4.4.1.8; facet.mincount;191
13.4.4.4.2;Example;191
13.4.4.5; Interval Faceting;191
13.4.4.5.1;Specific Parameters;191
13.4.4.5.1.1;The following are the request parameters specific to interval faceting.facet.interval;191
13.4.4.5.1.2; facet.interval.set;192
13.4.4.5.2;Example;192
13.4.4.6;Pivot Faceting: Decision Tree;192
13.4.4.6.1;Specific Parameters;192
13.4.4.6.1.1;facet.pivot;193
13.4.4.6.1.2; facet.pivot.mincount;193
13.4.4.6.2;Example;193
13.5; Reranking Query;194
13.5.1; Request Parameters;194
13.5.1.1;reRankQuery;194
13.5.1.2; reRankDocs;194
13.5.1.3; reRankWeight;194
13.5.2; Example;194
13.6; Join Query;195
13.6.1; Limitations;195
13.6.2; Example;195
13.7; Block Join;195
13.7.1; Prerequisites;195
13.7.2; Example;196
13.8; Function Query;197
13.8.1; Prerequisites;198
13.8.2; Usage;199
13.8.3; Function Categories;200
13.8.4; Example;201
13.8.5; Caution;201
13.8.6; Custom Function Query;201
13.8.6.1;Java Source Code;204
13.9; Referencing an External File;206
13.9.1; Usage;206
13.10; Summary;207
14;Chapter 8: Solr Scoring;208
14.1; Introduction to Solr Scoring;208
14.2; Default Scoring;210
14.2.1; Implementation;211
14.2.2; Scoring Factors;211
14.2.3; Scoring Formula;212
14.2.3.1;tf(t in d);213
14.2.3.2; idf(t);213
14.2.3.3; coord(q,d);213
14.2.3.4; queryNorm(q);214
14.2.3.5; t.getBoost();214
14.2.3.6; norm(t,d);214
14.2.4; Limitations;215
14.3; Explain Query;215
14.4; Alternative Scoring Models;218
14.4.1; BM25Similarity;218
14.4.2; DFRSimilarity;220
14.4.2.1;Basic Model;220
14.4.2.2;After-Effect Model;221
14.4.2.3;Normalization;221
14.4.2.4; Usage;222
14.4.3; Other Similarity Measures;222
14.5; Per Field Similarity;223
14.6; Custom Similarity;224
14.7; Summary;226
15;Chapter 9: Additional Features;227
15.1; Sponsored Search;227
15.1.1; Usage;228
15.2; Spell-Checking;230
15.2.1; Generic Parameters;231
15.2.2; Implementations;231
15.2.2.1;IndexBasedSpellChecker;231
15.2.2.2; DirectSolrSpellChecker;232
15.2.2.3;FileBasedSpellChecker;233
15.2.2.4; WordBreakSolrSpellChecker;233
15.2.3; How It Works;234
15.2.4; Usage;234
15.3; Autocomplete;237
15.3.1; Traditional Approach;238
15.3.1.1;TermsComponent;238
15.3.1.1.1;Benefits;238
15.3.1.1.2;Limitations;239
15.3.1.1.3; Usage;239
15.3.1.2;Facets;241
15.3.1.2.1;Benefits;241
15.3.1.2.2;Limitations;241
15.3.1.2.3;Usage;241
15.3.1.3;EdgeNGram;242
15.3.1.3.1;Benefits;242
15.3.1.3.2;Limitations;243
15.3.1.3.3;Usage;243
15.3.2; SuggestComponent;244
15.3.2.1;Dictionary;244
15.3.2.1.1;DocumentDictionaryFactory;244
15.3.2.1.2; DocumentExpressionDictionaryFactory;244
15.3.2.1.3; HighFrequencyDictionary;244
15.3.2.1.4; FileDictionaryFactory;245
15.3.2.2; Algorithm;245
15.3.2.2.1;TSTLookupFactory;246
15.3.2.2.2; FSTLookupFactory;246
15.3.2.2.3; WFSTLookupFactory;246
15.3.2.2.4; JaspellLookupFactory;246
15.3.2.2.5; AnalyzingLookupFactory;246
15.3.2.2.6; FuzzyLookupFactory;247
15.3.2.2.7; AnalyzingInfixLookupFactory;247
15.3.2.2.8; BlendedInfixLookupFactory;248
15.3.2.2.9; FreeTextLookupFactory;248
15.3.2.3;How It Works;249
15.3.2.4; Usage;249
15.4; Document Similarity;252
15.4.1; Prerequisites;252
15.4.2; Implementations;253
15.4.2.1;Generic Parameters;253
15.4.2.2; MoreLikeThisComponent;254
15.4.2.2.1;How It Works;254
15.4.2.2.2; Usage;254
15.4.2.3; MoreLikeThisHandler;255
15.4.2.3.1;How It Works;255
15.4.2.3.2; Usage;256
15.4.2.4; MLTQParserPlugin;256
15.4.2.4.1;How It Works;256
15.4.2.4.2; Usage;257
15.5; Summary;257
16;Chapter 10: Traditional Scaling and SolrCloud;258
16.1; Stand-Alone Mode;258
16.2; Sharding;259
16.3; Master-Slave Architecture;261
16.3.1; Master;263
16.3.2; Slave;264
16.4; Shards with Master-Slave;264
16.5; SolrCloud;266
16.5.1; Understanding the Terminology;266
16.5.1.1;Node;266
16.5.1.2;Cluster;267
16.5.1.3;Core;268
16.5.1.4;Collection;268
16.5.1.5;Shards;268
16.5.1.6; Replica;269
16.5.1.7; Leader;269
16.5.2; Starting SolrCloud;270
16.5.2.1;Interactive Mode;270
16.5.2.2; Standard Mode;271
16.5.3; Restarting a Node;271
16.5.4; Creating a Collection;271
16.5.5; Uploading to ZooKeeper;272
16.5.6; Deleting a Collection;273
16.5.7; Indexing a Document;273
16.5.8; Load Balancing;274
16.5.9; Document Routing;274
16.5.10; Working with a Transaction Log;275
16.5.11; Performing a Shard Health Check;275
16.5.12; Querying Results;275
16.5.13; Performing a Recovery;276
16.5.14; Shard Splitting;277
16.5.15; Adding a Replica;277
16.6; ZooKeeper;277
16.7; Frequently Asked Questions;278
16.7.1; Why is the size of my data/tlog directory growing drastically? How can I handle that?;278
16.7.2; Can I totally disable transaction logs ? What would be the impact?;279
16.7.3; I have recently migrated from traditional architecture to SolrCloud . Is there anything that I should be careful of and no...;279
16.7.4; I am migrating to SolrCloud, but it fails to upload the configurations to ZooKeeper . What could be the reason?;279
16.8; Summary;279
17;Chapter 11: Semantic Search;280
17.1; Limitations of Keyword Systems;281
17.2; Semantic Search;282
17.3; Tools;284
17.3.1; OpenNLP;284
17.3.2; Apache UIMA;284
17.3.3; Apache Stanbol;285
17.4; Techniques Applied;285
17.5; Part-of-Speech Tagging;287
17.5.1; Solr Plug-in for POS Tagging;288
17.6; Named-Entity Extraction;291
17.6.1; Using Rules and Regex;292
17.6.2; Using a Dictionary or Gazetteer;293
17.6.3; Using a Trained Model;294
17.6.3.1;Solr Plug-in for Entity Extraction;295
17.7; Semantic Enrichment;298
17.7.1; Synonym Expansion;299
17.7.2; WordNet;300
17.7.3; Solr Plug-in for Synonym Expansion;300
17.7.3.1;Synonym Expansion Using WordNet;300
17.7.3.2; Custom Token Filter for Synonym Expansion;302
17.8; Summary;307
18;Index;308




