S BOOKS FOR PROFESSIONALS BY PROFESSIONALS® h THE EXPERT’S VOICE® IN ENTERPRISE SEARCH a h i A Apache Solr p a Apache Solr Apache Solr: A Practical Approach to Enterprise Search teaches you how to build an enterprise c search engine using Apache Solr. You’ll soon learn how to index and search your documents; h ingest data from varied sources; pre-process, transform and enrich your data; and build the e processing pipeline. S You will understand the concepts and internals of Apache Solr and tune the results for your o client’s search needs. The book explains each essential concept—backed by practical and l r industry examples—to help you attain expert-level knowledge. The book, which assumes a basic knowledge of Java, starts with an introduction to Solr, A Practical Approach to Enterprise Search 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 Dikshant Shahi 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 use Solr as a NoSQL data store, as an analytics engine, to provide suggestions for users, and to generate recommendations. You’ll also cover integration of Solr with i mportant related technologies like OpenNLP, Apache Tika, Apache ZooKeeper, 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 profi cient in designing, architecting, and developing your search engine and be able to integrate it with other systems. US $39.99 ISBN 978-1-4842-1071-0 Shelve in: 53999 Applications/General User level: Beginning–Advanced 9781484210710 SOURCE CODE ONLINE www.apress.com Apache Solr A Practical Approach to Enterprise Search Dikshant Shahi Apache Solr: A Practical Approach to Enterprise Search Copyright © 2015 by Dikshant Shahi This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Exempted from this legal reservation are brief excerpts in connection with reviews or scholarly analysis or material supplied specifically for the purpose of being entered and executed on a computer system, for exclusive use by the purchaser of the work. Duplication of this publication or parts thereof is permitted only under the provisions of the Copyright Law of the Publisher’s location, in its current version, and permission for use must always be obtained from Springer. Permissions for use may be obtained through RightsLink at the Copyright Clearance Center. Violations are liable to prosecution under the respective Copyright Law. ISBN-13 (pbk): 978-1-4842-1071-0 ISBN-13 (electronic): 978-1-4842-1070-3 Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image, we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director: Welmoed Spahr Acquisitions Editor: Celestin Suresh John Development Editor: Matthew Moodie Technical Reviewer: Shweta Gupta Editorial Board: Steve Anglin, Pramilla Balan, Louise Corrigan, James DeWolf, Jonathan Gennick, Robert Hutchinson, Celestin Suresh John, Michelle Lowman, James Markham, Susan McDermott, Matthew Moodie, Jeffrey Pepper, Douglas Pundick, Ben Renow-Clarke, Gwenan Spearing Coordinating Editor: Rita Fernando Copy Editor: Sharon Wilkey Compositor: SPi Global Indexer: SPi Global Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected], or visit www.springer.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc. (SSBM Finance Inc.). SSBM Finance Inc. is a Delaware corporation. For information on translations, please e-mail [email protected], or visit www.apress.com. Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Special Bulk Sales–eBook Licensing web page at www.apress.com/bulk-sales. Any source code or other supplementary materials referenced by the author in this text is available to readers at www.apress.com/. For detailed information about how to locate your book’s source code, go to www.apress.com/source-code/. To my foster mother, Mrs. Pratima Singh, for educating me! Contents at a Glance About the Author ����������������������������������������������������������������������������������������������������xix About the Technical Reviewer ��������������������������������������������������������������������������������xxi Acknowledgments ������������������������������������������������������������������������������������������������xxiii Introduction �����������������������������������������������������������������������������������������������������������xxv ■ Chapter 1: Apache Solr: An Introduction ���������������������������������������������������������������1 ■ Chapter 2: Solr Setup and Administration �����������������������������������������������������������11 ■ Chapter 3: Information Retrieval �������������������������������������������������������������������������39 ■ Chapter 4: Schema Design and Text Analysis �����������������������������������������������������57 ■ Chapter 5: Indexing Data �������������������������������������������������������������������������������������99 ■ Chapter 6: Searching Data ���������������������������������������������������������������������������������125 ■ Chapter 7: Searching Data: Part 2 ���������������������������������������������������������������������155 ■ Chapter 8: Solr Scoring �������������������������������������������������������������������������������������189 ■ Chapter 9: Additional Features ��������������������������������������������������������������������������209 ■ Chapter 10: Traditional Scaling and SolrCloud ��������������������������������������������������241 ■ Chapter 11: Semantic Search ����������������������������������������������������������������������������263 Index ���������������������������������������������������������������������������������������������������������������������291 v Contents About the Author ����������������������������������������������������������������������������������������������������xix About the Technical Reviewer ��������������������������������������������������������������������������������xxi Acknowledgments ������������������������������������������������������������������������������������������������xxiii Introduction �����������������������������������������������������������������������������������������������������������xxv ■ Chapter 1: Apache Solr: An Introduction ���������������������������������������������������������������1 Overview ��������������������������������������������������������������������������������������������������������������������������1 Inside Solr ������������������������������������������������������������������������������������������������������������������������2 What Makes Apache Solr So Popular �������������������������������������������������������������������������������3 Major Building Blocks ������������������������������������������������������������������������������������������������������4 History ������������������������������������������������������������������������������������������������������������������������������4 What’s New in Solr 5�x �����������������������������������������������������������������������������������������������������5 Beyond Search �����������������������������������������������������������������������������������������������������������������5 Solr vs� Other Options�������������������������������������������������������������������������������������������������������6 Relational Databases ������������������������������������������������������������������������������������������������������������������������������6 Elasticsearch ������������������������������������������������������������������������������������������������������������������������������������������7 Related Technologies �������������������������������������������������������������������������������������������������������8 Summary ��������������������������������������������������������������������������������������������������������������������������8 Resources�������������������������������������������������������������������������������������������������������������������������9 ■ Chapter 2: Solr Setup and Administration �����������������������������������������������������������11 Stand-Alone Server ��������������������������������������������������������������������������������������������������������11 Prerequisites ������������������������������������������������������������������������������������������������������������������12 Download �����������������������������������������������������������������������������������������������������������������������13 vii ■ Contents Terminology ��������������������������������������������������������������������������������������������������������������������13 General Terminology �����������������������������������������������������������������������������������������������������������������������������13 SolrCloud Terminology ��������������������������������������������������������������������������������������������������������������������������14 Important Configuration Files ���������������������������������������������������������������������������������������������������������������15 Directory Structure ���������������������������������������������������������������������������������������������������������15 Solr Installation �������������������������������������������������������������������������������������������������������������������������������������16 Solr Home ���������������������������������������������������������������������������������������������������������������������������������������������19 Hands-On Exercise ���������������������������������������������������������������������������������������������������������20 Start Solr ����������������������������������������������������������������������������������������������������������������������������������������������20 Create a Core ����������������������������������������������������������������������������������������������������������������������������������������22 Index Some Data ����������������������������������������������������������������������������������������������������������������������������������22 Search for Results ��������������������������������������������������������������������������������������������������������������������������������23 Solr Script ����������������������������������������������������������������������������������������������������������������������25 Starting Solr ������������������������������������������������������������������������������������������������������������������������������������������25 Using Solr Help �������������������������������������������������������������������������������������������������������������������������������������26 Stopping Solr ����������������������������������������������������������������������������������������������������������������������������������������26 Restarting Solr ��������������������������������������������������������������������������������������������������������������������������������������27 Determining Solr Status �����������������������������������������������������������������������������������������������������������������������27 Configuring Solr Start ���������������������������������������������������������������������������������������������������������������������������27 Admin Web Interface ������������������������������������������������������������������������������������������������������28 Core Management ����������������������������������������������������������������������������������������������������������29 Config Sets �������������������������������������������������������������������������������������������������������������������������������������������29 Create Configset �����������������������������������������������������������������������������������������������������������������������������������29 Create Core �������������������������������������������������������������������������������������������������������������������������������������������30 Core Status �������������������������������������������������������������������������������������������������������������������������������������������32 Unload Core ������������������������������������������������������������������������������������������������������������������������������������������33 Delete Core �������������������������������������������������������������������������������������������������������������������������������������������33 Core Rename ����������������������������������������������������������������������������������������������������������������������������������������33 Core Swap ��������������������������������������������������������������������������������������������������������������������������������������������33 Core Split ����������������������������������������������������������������������������������������������������������������������������������������������34 Index Backup ����������������������������������������������������������������������������������������������������������������������������������������34 viii ■ Contents Index Restore ����������������������������������������������������������������������������������������������������������������������������������������34 Instance Management ����������������������������������������������������������������������������������������������������35 Setting Solr Home ���������������������������������������������������������������������������������������������������������������������������������35 Memory Management ��������������������������������������������������������������������������������������������������������������������������35 Log Management ����������������������������������������������������������������������������������������������������������������������������������36 Common Exceptions �������������������������������������������������������������������������������������������������������37 OutOfMemoryError—Java Heap Space ������������������������������������������������������������������������������������������������37 OutOfMemoryError—PermGen Space ��������������������������������������������������������������������������������������������������37 TooManyOpenFiles ��������������������������������������������������������������������������������������������������������������������������������38 UnSupportedClassVersionException �����������������������������������������������������������������������������������������������������38 Summary ������������������������������������������������������������������������������������������������������������������������38 ■ Chapter 3: Information Retrieval �������������������������������������������������������������������������39 Introduction to Information Retrieval �����������������������������������������������������������������������������39 Search Engines ��������������������������������������������������������������������������������������������������������������40 Data and Its Categorization ��������������������������������������������������������������������������������������������41 Structured ���������������������������������������������������������������������������������������������������������������������������������������������41 Unstructured �����������������������������������������������������������������������������������������������������������������������������������������41 Semistructured �������������������������������������������������������������������������������������������������������������������������������������42 Content Extraction ����������������������������������������������������������������������������������������������������������42 Text Processing ��������������������������������������������������������������������������������������������������������������43 Cleansing and Normalization ����������������������������������������������������������������������������������������������������������������44 Enrichment �������������������������������������������������������������������������������������������������������������������������������������������44 Metadata Generation ����������������������������������������������������������������������������������������������������������������������������45 Inverted Index �����������������������������������������������������������������������������������������������������������������47 Retrieval Models �������������������������������������������������������������������������������������������������������������48 Boolean Model ��������������������������������������������������������������������������������������������������������������������������������������48 Vector Space Model ������������������������������������������������������������������������������������������������������������������������������49 ix ■ Contents Probabilistic Model �������������������������������������������������������������������������������������������������������������������������������50 Language Model �����������������������������������������������������������������������������������������������������������������������������������50 Information Retrieval Process ����������������������������������������������������������������������������������������50 Plan �������������������������������������������������������������������������������������������������������������������������������������������������������51 Execute �������������������������������������������������������������������������������������������������������������������������������������������������53 Evaluate ������������������������������������������������������������������������������������������������������������������������������������������������53 Summary ������������������������������������������������������������������������������������������������������������������������56 ■ Chapter 4: Schema Design and Text Analysis �����������������������������������������������������57 Schema Design ��������������������������������������������������������������������������������������������������������������57 Documents �������������������������������������������������������������������������������������������������������������������������������������������58 schema�xml File������������������������������������������������������������������������������������������������������������������������������������58 Fields ����������������������������������������������������������������������������������������������������������������������������������������������������59 fieldType �����������������������������������������������������������������������������������������������������������������������������������������������60 copyField ����������������������������������������������������������������������������������������������������������������������������������������������66 Define the Unique Key ��������������������������������������������������������������������������������������������������������������������������67 Dynamic Fields �������������������������������������������������������������������������������������������������������������������������������������67 defaultSearchField ��������������������������������������������������������������������������������������������������������������������������������68 solrQueryParser ������������������������������������������������������������������������������������������������������������������������������������68 Similarity ����������������������������������������������������������������������������������������������������������������������������������������������69 Text Analysis �������������������������������������������������������������������������������������������������������������������69 Tokens ��������������������������������������������������������������������������������������������������������������������������������������������������72 Terms ����������������������������������������������������������������������������������������������������������������������������������������������������72 Analyzers ����������������������������������������������������������������������������������������������������������������������������������������������73 Analysis Phases ������������������������������������������������������������������������������������������������������������������������������������73 Analysis Tools ���������������������������������������������������������������������������������������������������������������������������������������75 Analyzer Components ���������������������������������������������������������������������������������������������������������������������������76 Common Text Analysis Techniques �������������������������������������������������������������������������������������������������������78 Going Schemaless ���������������������������������������������������������������������������������������������������������89 What Makes Solr Schemaless ��������������������������������������������������������������������������������������������������������������89 Configuration ����������������������������������������������������������������������������������������������������������������������������������������90 Limitations ��������������������������������������������������������������������������������������������������������������������������������������������92 x ■ Contents REST API for Managing Schema �������������������������������������������������������������������������������������92 Configuration ����������������������������������������������������������������������������������������������������������������������������������������93 REST Endpoints ������������������������������������������������������������������������������������������������������������������������������������93 Other Managed Resources �������������������������������������������������������������������������������������������������������������������95 solrconfig�xml File ����������������������������������������������������������������������������������������������������������95 Frequently Asked Questions �������������������������������������������������������������������������������������������96 How do I handle the exception indicating that the _version_ field must exist in the schema? �����������96 Why is my Schema Change Not Reflected in Solr? ������������������������������������������������������������������������������96 I Have Created a Core in Solr 5�0, but Schema�xml is Missing� Where Can I find it? ������������������������������������������������������������������������������������������������������������������������������96 Summary ������������������������������������������������������������������������������������������������������������������������96 ■ Chapter 5: Indexing Data �������������������������������������������������������������������������������������99 Indexing Tools ���������������������������������������������������������������������������������������������������������������100 Post Script ������������������������������������������������������������������������������������������������������������������������������������������100 SimplePostTool �����������������������������������������������������������������������������������������������������������������������������������100 curl �����������������������������������������������������������������������������������������������������������������������������������������������������100 SolrJ Java Library �������������������������������������������������������������������������������������������������������������������������������101 Other Libraries ������������������������������������������������������������������������������������������������������������������������������������101 Indexing Process ����������������������������������������������������������������������������������������������������������101 UpdateRequestHandler �����������������������������������������������������������������������������������������������������������������������103 UpdateRequestProcessorChain ����������������������������������������������������������������������������������������������������������103 UpdateRequestProcessor vs� Analyzer/Tokenizer �������������������������������������������������������������������������������105 Indexing Operations �����������������������������������������������������������������������������������������������������105 XML Documents ����������������������������������������������������������������������������������������������������������������������������������105 JSON Documents ��������������������������������������������������������������������������������������������������������������������������������110 CSV Documents ����������������������������������������������������������������������������������������������������������������������������������111 Index Rich Documents ������������������������������������������������������������������������������������������������������������������������111 DataImportHandler �������������������������������������������������������������������������������������������������������113 Document Preprocessing ���������������������������������������������������������������������������������������������115 Language Detection ����������������������������������������������������������������������������������������������������������������������������115 Generate Unique ID �����������������������������������������������������������������������������������������������������������������������������116 xi