{"componentChunkName":"component---node-modules-carrotsearch-gatsby-theme-apidocs-templates-documentation-page-js","path":"/basic-concepts/","result":{"data":{"html":{"frontmatter":{"id":"basic-concepts","title":"Basic concepts"},"html":"<article>\n  <h1>Basic concepts</h1>\n\n  <p id=\"f05e18e2\">\n    This section explains the basic concepts behind Lingo3G clustering, such as\n    input content requirements, characteristics of clusters, quality tuning\n    options and the available tools and APIs.\n  </p>\n\n  <p id=\"1cad00c7\">\n    This section is optional, feel free to skip to\n    <a href=\"/installation/\">Installation</a> and come back in case of any\n    doubts.\n  </p>\n\n  <section id=\"clusters\">\n    <h2>\n        <a class=\"anchor\" href=\"#clusters\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Clusters\n      </h2>\n\n    <p id=\"clusters:ab52b54b\">\n      Lingo3G organizes collections of documents into groups called\n      <em>clusters</em>.\n    </p>\n\n    <figure id=\"example-clusters\" class=\"round\">\n      <a href=\"https://search.carrotsearch.com/#/search/web/clustering/folders\" target=\"_blank\">\n        <div style=\"position: relative\">\n        <span style=\"padding-bottom: 42.77777777777778%; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsSAAALEgHS3X78AAABaElEQVQozy1R23KlIBD0/39tq7IPm0pl4/F2QFBURO5o1PTR9MMIzkzPdJNJZUap9aLUoowx+75/X9i2DRHXdd28d4NcrIuv5L5vF6y1mZonOU1CiGEYUBRjWlMEzvNct80H9K7WOu+t99oYK6VMKSGLmuzP3/e3f/8JacqyFD3TSnD2zPMHa2kv+pqImNI4SmSbpqmqahxHjAGF1jp7PL4+Pr84Iy2ti6IQPUUFpRQUhJAQPOZwzsuyqus6z/PpWhPNzrkseJNiWKML3qdosRhWOo4DEYIR0Qyue/KL9MJvs1rglcIOIUR4tF64+28KaINm2BMCDFhvI/Hfe59RUjHWduzZ95y1pK6bruOLGiEE8vb9gPFGz1LOmGGNTtEtWoMCXFnHYFXVPElwklHoagbRy5F1nEKec/48vhfZYueiKIeeqRluzb+T50kwxnF6ve+2wls8Jr7Y7ryAK7wAtDYhOGsU1N7NPyB0+x5Zgt7VAAAAAElFTkSuQmCC')\" class=\"preview light fluid\"> </span>\n        <img class=\"light fluid\" alt=\"Document clusters generated by Lingo3G for the 'clustering' web search results, light theme.\" title src=\"../static/1275ee85fea4fe10238d0e08a38d92d4/eefce/example-clusters-light.png\" srcset=\"../static/1275ee85fea4fe10238d0e08a38d92d4/dfaee/example-clusters-light.png 180w,\n../static/1275ee85fea4fe10238d0e08a38d92d4/4d463/example-clusters-light.png 360w,\n../static/1275ee85fea4fe10238d0e08a38d92d4/eefce/example-clusters-light.png 720w,\n../static/1275ee85fea4fe10238d0e08a38d92d4/dabea/example-clusters-light.png 1080w,\n../static/1275ee85fea4fe10238d0e08a38d92d4/87339/example-clusters-light.png 1440w,\n../static/1275ee85fea4fe10238d0e08a38d92d4/bcbc8/example-clusters-light.png 2584w\" sizes=\"(max-width: 720px) 100vw, 720px\">\n      </div>\n        <div style=\"position: relative\">\n        <span style=\"padding-bottom: 42.77777777777778%; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsSAAALEgHS3X78AAABjklEQVQozyVR7Y6kIBD0RTa3M+O3gIiIjIqIjLoz7ldy9+9y7/8aV+4khGB3VXVVG7Bm5K0rZcfqnojrOSkvKccdZhUel59HxppKzzk/uk/AT1EFtRqkHlXv5HUivE2pzGgN9CkmUVbFpInyquAtrRQOqbRQJi7ql3OWFCLYf//bvv5O/u63j370bTfYeV0e32be2t6r8Z4QUWuLrvV3t+xNN+GI1jChg+3xvb7/GefN+bfl/mWsd+tu3DbOK9CEq4TUV+Pn9X1adgCktrAJclGqAGYyJkkp8YGbHrHpKaaniFzS8jWicSF6u4IMrcFt2nho1e2YsybAqnjTs7rLKOIJzAEazHPMzgl7jQgqiApRqD+7ByCm2E7gbm/DtI5u7YyHeXjrx1vTDqggG4aHacnlVaiBNwM7JCQmhTk/yJNb3Ipl7KLRk9/ssuvBdWYy001ebV6qS8q63tjbw2+fvXGN7itl4CgDue1sZ5eCqzAr45zDGEYlRRXm1a+wQGaQC1ZT8XQuudQ5b9HC7/wP4e5wRkbnZfsAAAAASUVORK5CYII=')\" class=\"preview dark fluid\"> </span>\n        <img class=\"dark fluid\" alt=\"Document clusters generated by Lingo3G for the 'clustering' web search results, dark theme.\" title src=\"../static/ba134a2b6d9e2dbc7a0b337bac14f69d/eefce/example-clusters-dark.png\" srcset=\"../static/ba134a2b6d9e2dbc7a0b337bac14f69d/dfaee/example-clusters-dark.png 180w,\n../static/ba134a2b6d9e2dbc7a0b337bac14f69d/4d463/example-clusters-dark.png 360w,\n../static/ba134a2b6d9e2dbc7a0b337bac14f69d/eefce/example-clusters-dark.png 720w,\n../static/ba134a2b6d9e2dbc7a0b337bac14f69d/dabea/example-clusters-dark.png 1080w,\n../static/ba134a2b6d9e2dbc7a0b337bac14f69d/87339/example-clusters-dark.png 1440w,\n../static/ba134a2b6d9e2dbc7a0b337bac14f69d/bcbc8/example-clusters-dark.png 2584w\" sizes=\"(max-width: 720px) 100vw, 720px\">\n      </div>\n      </a>\n      <figcaption>\n        <p>\n          <a href=\"https://search.carrotsearch.com/#/search/web/clustering/folders\" target=\"_blank\">Document clusters generated by Lingo3G</a>\n          for the <strong>clustering</strong> web search results.\n        </p>\n      </figcaption>\n    </figure>\n\n    <p id=\"clusters:8f1f8cd3\">Clusters created by Lingo3G share the following characteristics:</p>\n\n    <ul>\n      <li>\n        <p id=\"clusters:bcca70db\">\n          <strong>Described by labels.</strong> To each document cluster Lingo3G\n          attaches one or more labels that summarize the contents of the\n          cluster. Labels consist of single words or phrases, such as\n          <em>Python</em> or <em>Hybrid Hierarchical Clustering</em>.\n        </p>\n      </li>\n\n      <li>\n        <p id=\"clusters:851d5573\">\n          <strong>Containing related documents.</strong> Lingo3G ensures that\n          documents inside the cluster contain at least one of the cluster's\n          labels.\n        </p>\n\n        <p id=\"clusters:64754711\">\n          If a document contains a different grammatical form of a cluster's\n          label (for example, <em>Tools</em> and <em>Tool</em>), Lingo3G still\n          puts the document in the cluster.\n        </p>\n\n        <p id=\"clusters:8e2127f1\">\n          For phrase labels, such as <em>Hybrid Hierarchical Clustering</em>,\n          each document in the cluster contains all words of the label, but not\n          necessarily in order or close proximity. You can\n          <a href=\"/lingo3g-parameters/#clusters.preciseDocumentAssignment\">change this behavior</a>\n          if needed.\n        </p>\n      </li>\n\n      <li>\n        <p id=\"clusters:7730643a\">\n          <strong>Overlapping.</strong> Lingo3G may put the same document into\n          multiple clusters. For example, Lingo3G may put a document containing\n          the <em>k-means clustering research paper</em> in the\n          <em>k-means</em> and <em>Research</em> clusters.\n        </p>\n      </li>\n\n      <li>\n        <p id=\"clusters:a81f9c9d\">\n          <strong>Hierarchical.</strong> Lingo3G tries to divide large clusters\n          into subclusters. For specific inputs, such as when the number of\n          documents is small, Lingo3G may not be able to generate subclusters.\n        </p>\n      </li>\n\n      <li>\n        <p id=\"clusters:a4d5d148\">\n          <strong>Some documents not clustered.</strong> In most cases, Lingo3G\n          will not be able to put all documents into clusters, leaving the\n          unclustered documents in the <em>Other topics</em>\n          group. You can tune Lingo3G to\n          <a href=\"/parameter-tuning/#faq-unclustered-documents\">reduce the number of unclustered documents</a>, but bringing the size of <em>Other topics</em>\n          to zero will not be possible in most cases.\n        </p>\n      </li>\n\n      <li>\n        <p id=\"clusters:5d7ad1a4\">\n          <strong>Quality may need tuning.</strong> Lingo3G should produce good\n          clusters for reasonably noise-free English inputs. In case of other\n          languages or noisy content, you may need to\n          <a href=\"/parameter-tuning/\">tune</a> the parameters or filtering\n          dictionaries.\n        </p>\n      </li>\n    </ul>\n  </section>\n\n  <section id=\"documents-for-clustering\">\n    <h2>\n        <a class=\"anchor\" href=\"#documents-for-clustering\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Documents for clustering\n      </h2>\n\n    <p id=\"documents-for-clustering:168bdb69\">\n      The quality and performance of clustering depends on the characteristics\n      of documents you provide to Lingo3G for clustering. Here are some\n      recommendations about the perfect input for Lingo3G:\n    </p>\n\n    <ul>\n      <li>\n        <p id=\"documents-for-clustering:4f5775ac\">\n          <strong>Lingo3G works best clustering 100 – 1000 documents at\n            once.</strong>\n          If you pass fewer than 20 documents, Lingo3G may fail to produce\n          meaningful clusters.\n        </p>\n      </li>\n\n      <li>\n        <p id=\"documents-for-clustering:ec260ce7\">\n          <strong>Minimize \"noise\" in the input documents.</strong> Truncated\n          sentences or random alphanumerical strings may decrease the quality of\n          cluster labels. If your documents consist of several fields and some\n          fields seem \"noisier\" than the others, try excluding the noisy fields\n          from clustering.\n        </p>\n      </li>\n\n      <li>\n        <p id=\"documents-for-clustering:110066b8\">\n          <strong>Documents with a maximum of 1000 words work best.</strong>\n          For long documents, Lingo3G will may highly-overlapping less\n          informative clusters. If you plan to cluster very long documents,\n          consider splitting them on chapter or paragraph boundaries.\n        </p>\n      </li>\n\n      <li>\n        <p id=\"documents-for-clustering:6ee30b4c\">\n          <strong>Clustering more than 10,000 documents will require tuning.</strong>\n          Lingo3G performs in-memory clustering to ensure fast, real-time\n          processing. The practical upper limit on the combined length of\n          documents Lingo3G can cluster at once is about 10 MB. If you need to\n          process large inputs, consider\n          <a href=\"https://carrotsearch.com/lingo4g/\">Lingo4G</a> – a\n          large-scale clustering engine that can cluster millions of documents.\n        </p>\n      </li>\n\n      <li>\n        <p id=\"documents-for-clustering:10222fd0\">\n          <strong>Don't mix documents written in different languages.</strong>\n          For best results, split your documents by language and cluster each\n          language separately. There are quite a few open source language\n          identification libraries, if you need one.\n        </p>\n      </li>\n\n      <li>\n        <p id=\"documents-for-clustering:12abd961\">\n          <strong>Submit only natural text for clustering.</strong> Lingo3G\n          cannot use numeric or nominal fields for clustering, but these can be\n          useful for\n          <a href=\"/clustering-workbench-app/#user-interface:document-view-configuration\">display purposes</a>\n          in your application or Lingo3G Clustering Workbench.\n        </p>\n      </li>\n    </ul>\n  </section>\n\n  <section id=\"tools-and-apis\">\n    <h2>\n        <a class=\"anchor\" href=\"#tools-and-apis\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Tools and APIs\n      </h2>\n\n    <p id=\"tools-and-apis:7fb004f5\">\n      Lingo3G comes with a suite of tools and APIs that you can use to quickly\n      try clustering on your own data, tune clustering parameters and integrate\n      Lingo3G with your software.\n    </p>\n\n    <section id=\"apis-and-tools:document-clustering-server\">\n      <h3>\n        <a class=\"anchor\" href=\"#apis-and-tools:document-clustering-server\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Document Clustering Server (DCS)\n      </h3>\n\n      <p id=\"apis-and-tools:document-clustering-server:c39296a6\">\n        The Document Clustering Server (DCS) is an application you need to run\n        to access the following elements of Lingo3G:\n      </p>\n\n      <ul>\n        <li id=\"apis-and-tools:document-clustering-server:de99ab94\"><a href=\"#tools-and-apis:end-user-apps\">End-user apps</a></li>\n        <li id=\"apis-and-tools:document-clustering-server:f243de3c\"><a href=\"#tools-and-apis:apis:rest-api\">Lingo3G REST API</a></li>\n        <li id=\"apis-and-tools:document-clustering-server:4ba96d1d\">Java API documentation (JavaDoc)</li>\n        <li id=\"apis-and-tools:document-clustering-server:567ead09\">REST API documentation</li>\n      </ul>\n\n      <p id=\"apis-and-tools:document-clustering-server:8240f531\">\n        You will find the DCS in the <code>/dcs</code> directory of Lingo3G\n        distribution package.\n      </p>\n    </section>\n\n    <section id=\"tools-and-apis:end-user-apps\">\n      <h3>\n        <a class=\"anchor\" href=\"#tools-and-apis:end-user-apps\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>End-user apps\n      </h3>\n\n      <p id=\"tools-and-apis:end-user-apps:63e854e7\">\n        Lingo3G comes with two browser-based apps for end users: Search Results\n        Clustering and Clustering Workbench. We created the apps to help you\n        quickly try Lingo3G clustering on your data. However, if you find the\n        apps useful in your daily text mining work, feel free to use them on a\n        regular basis.\n      </p>\n\n      <p id=\"tools-and-apis:end-user-apps:a57feded\">\n        While we plan to add new features to the end-user apps, our priority is\n        the development of the Lingo3G clustering algorithm core.\n      </p>\n\n      <p id=\"tools-and-apis:end-user-apps:0e355018\">\n        To access the apps, you need to run the\n        <a href=\"#apis-and-tools:document-clustering-server\">Document Clustering Server</a>.\n      </p>\n\n      <section id=\"tools-and-apis:end-user-applications:search-results-clustering\">\n        <h4>\n        <a class=\"anchor\" href=\"#tools-and-apis:end-user-applications:search-results-clustering\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Search Results Clustering\n      </h4>\n\n        <p id=\"tools-and-apis:end-user-applications:search-results-clustering:fa54ce07\">\n          Lingo3G Search Results Clustering app helps novice users to cluster\n          search results from public search engines. To keep the experience\n          simple, the app only lets the user type the query and browse the\n          clusters in textual and graphical form.\n        </p>\n\n        <p id=\"tools-and-apis:end-user-applications:search-results-clustering:d88c9a10\">\n          The quickest way to use the Search Results Clustering app is to\n          <a href=\"https://search.carrotsearch.com\" target=\"_blank\">try the on-line version</a>. For other options, see\n          <a href=\"/trying-lingo3g/\">Trying Lingo3G</a>. See the\n          <a href=\"/search-results-clustering-app/#user-interface-highlights\">Search Results Clustering app</a>\n          section for a brief description of the user interface.\n        </p>\n\n        <figure id=\"lingo3g-search-app\" class=\"round\">\n          <a href=\"https://search.carrotsearch.com/#/search/web/data%20mining/treemap\" target=\"_blank\">\n            <div style=\"position: relative\">\n        <span style=\"padding-bottom: 56.111111111111114%; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAMEAf/EABUBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAGilNsjjSn/xAAaEAACAgMAAAAAAAAAAAAAAAABAgADEiEi/9oACAEBAAEFAkazCh2YRRxWNT//xAAVEQEBAAAAAAAAAAAAAAAAAAAQEf/aAAgBAwEBPwGn/8QAGBEAAgMAAAAAAAAAAAAAAAAAAQIQETH/2gAIAQIBAT8BU7cf/8QAGxAAAgEFAAAAAAAAAAAAAAAAAhAAARESQXH/2gAIAQEABj8CGxalckPH/8QAGRABAAMBAQAAAAAAAAAAAAAAAQARIRCB/9oACAEBAAE/ISFQUrIytxyzheCEZ5//2gAMAwEAAgADAAAAEO8P/8QAFhEBAQEAAAAAAAAAAAAAAAAAAREQ/9oACAEDAQE/EG2Z/8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQIBAT8QdBH/xAAbEAEBAQACAwAAAAAAAAAAAAABEQAhQTFRof/aAAgBAQABPxBQEQc+j5mwokBgEu8TeaRfWXxK8zvBDf/Z')\" class=\"preview light fluid\"> </span>\n        <img class=\"light fluid\" alt=\"Lingo3G Search Results Clustering app, light theme.\" title src=\"../static/9b376e51b8ef7a88a547dd1cc691a932/554bf/lingo3g-search-app-light.jpg\" srcset=\"../static/9b376e51b8ef7a88a547dd1cc691a932/388fb/lingo3g-search-app-light.jpg 180w,\n../static/9b376e51b8ef7a88a547dd1cc691a932/1ff7f/lingo3g-search-app-light.jpg 360w,\n../static/9b376e51b8ef7a88a547dd1cc691a932/554bf/lingo3g-search-app-light.jpg 720w,\n../static/9b376e51b8ef7a88a547dd1cc691a932/797d6/lingo3g-search-app-light.jpg 1080w,\n../static/9b376e51b8ef7a88a547dd1cc691a932/60e21/lingo3g-search-app-light.jpg 1440w,\n../static/9b376e51b8ef7a88a547dd1cc691a932/9e6b0/lingo3g-search-app-light.jpg 3840w\" sizes=\"(max-width: 720px) 100vw, 720px\">\n      </div>\n            <div style=\"position: relative\">\n        <span style=\"padding-bottom: 56.111111111111114%; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAwAE/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQAC/9oADAMBAAIQAxAAAAHCTEB1av/EABoQAAICAwAAAAAAAAAAAAAAAAECABARITH/2gAIAQEAAQUCVcigdN2f/8QAFREBAQAAAAAAAAAAAAAAAAAAEBH/2gAIAQMBAT8Bp//EABURAQEAAAAAAAAAAAAAAAAAAAEQ/9oACAECAQE/ARn/xAAVEAEBAAAAAAAAAAAAAAAAAAAQAf/aAAgBAQAGPwJj/8QAGhABAAMAAwAAAAAAAAAAAAAAAQAQIRExgf/aAAgBAQABPyHhXOolJ4Rruv/aAAwDAQACAAMAAAAQfx//xAAXEQADAQAAAAAAAAAAAAAAAAABEBEh/9oACAEDAQE/EDWL/8QAFhEBAQEAAAAAAAAAAAAAAAAAARAR/9oACAECAQE/EGxGf//EABkQAQADAQEAAAAAAAAAAAAAAAEAESFBMf/aAAgBAQABPxC2fAXdleAOcWKjUIQ4YyObXnYts//Z')\" class=\"preview dark fluid\"> </span>\n        <img class=\"dark fluid\" alt=\"Lingo3G Search Results Clustering app, dark theme.\" title src=\"../static/501d6daca80a431d4257b0ba67da95d7/554bf/lingo3g-search-app-dark.jpg\" srcset=\"../static/501d6daca80a431d4257b0ba67da95d7/388fb/lingo3g-search-app-dark.jpg 180w,\n../static/501d6daca80a431d4257b0ba67da95d7/1ff7f/lingo3g-search-app-dark.jpg 360w,\n../static/501d6daca80a431d4257b0ba67da95d7/554bf/lingo3g-search-app-dark.jpg 720w,\n../static/501d6daca80a431d4257b0ba67da95d7/797d6/lingo3g-search-app-dark.jpg 1080w,\n../static/501d6daca80a431d4257b0ba67da95d7/60e21/lingo3g-search-app-dark.jpg 1440w,\n../static/501d6daca80a431d4257b0ba67da95d7/9e6b0/lingo3g-search-app-dark.jpg 3840w\" sizes=\"(max-width: 720px) 100vw, 720px\">\n      </div>\n          </a>\n          <figcaption>\n            <p>\n              <a href=\"https://search.carrotsearch.com/#/search/web/data%20mining/treemap\" target=\"_blank\">Lingo3G search result clustering app</a>\n              showing results for the <strong><em>data mining</em></strong> web\n              search query.\n            </p>\n          </figcaption>\n        </figure>\n      </section>\n\n      <section id=\"tools-and-apis:end-user-applications:clustering-workbench\">\n        <h4>\n        <a class=\"anchor\" href=\"#tools-and-apis:end-user-applications:clustering-workbench\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Clustering Workbench\n      </h4>\n\n        <p id=\"tools-and-apis:end-user-applications:clustering-workbench:9c554c61\">\n          If you have some basic IT experience, you can use Clustering Workbench\n          to quickly try Lingo3G clustering on your data. Clustering Workbench\n          may also be suitable as a text mining tool you use on a regular basis.\n        </p>\n\n        <figure id=\"lingo3g-workbench\" class=\"round\">\n          <a href=\"https://search.carrotsearch.com/#/workbench\" target=\"_blank\">\n            <div style=\"position: relative\">\n        <span style=\"padding-bottom: 56.111111111111114%; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAACBUlEQVQoz11SyY7UMBTMZw1iFqbFiDs3DnxoX4EbZw6IRd2dPWlvsRM7WxfPLzQzIpKV2HmuV/Wqkoc3OxwOB7TnM1ohIY2FcxZCSno7eO+xrivmaYTtOt6HELAsC8ZxgtIa/TBsNfOM5ObVa5RVhTMBCiGglMboDaoyg1E12jpFXddY5gFlkUKJGkqeMfQWPoz0r0JVbaujhsn9ww55nqNtW5RlyaDB9xBKobMWltj2PmCaAvzQ43K5AIgLGIhZmqbIsgzH43EDvL1/xOGUEkOBpmmZoTYSRyrKqxIZNSnqloGNVix1gwNJHukOMY7NCSyOIrmLDIuCZihQkTQhFRzJifO0fQ9tHezgiY37B3h9pnnBmepNZzH/PWeG33/+JoYtm+BcT9IspGigtSQQQfNyGIODlIJZXS4rX54nzzXOGq6J40hu7h7x9dsPaEWMGNDRDC2auiQwOusUOzuFnqRJdvYKOI6BzCg32ZSKyD65Jcm/Dic+0MbAkMTRO+7ak+Tgt0hM44Ce5hifzRhQo0CmZDidTs+mvH16R1IkD7ZpGnI2MjQocopLlaGpUnRGkeSemnQM9gzoURQ5rYKTEtUl7z98pGAfOUcxi5qCGg2IkYhBXdeFJUaGxuj/TJmZyHZn2GZ4v3vCfr/Hp89fmF3sEoFeSrt+X/cv39M0c310eV0v+AMEdjUAm8MUewAAAABJRU5ErkJggg==')\" class=\"preview light fluid\"> </span>\n        <img class=\"light fluid\" alt=\"Lingo3G Clustering Workbench, light theme.\" title src=\"../static/598e450ac25a2ee7b61dc766274e814d/eefce/lingo3g-workbench-light.png\" srcset=\"../static/598e450ac25a2ee7b61dc766274e814d/dfaee/lingo3g-workbench-light.png 180w,\n../static/598e450ac25a2ee7b61dc766274e814d/4d463/lingo3g-workbench-light.png 360w,\n../static/598e450ac25a2ee7b61dc766274e814d/eefce/lingo3g-workbench-light.png 720w,\n../static/598e450ac25a2ee7b61dc766274e814d/dabea/lingo3g-workbench-light.png 1080w,\n../static/598e450ac25a2ee7b61dc766274e814d/87339/lingo3g-workbench-light.png 1440w,\n../static/598e450ac25a2ee7b61dc766274e814d/022a0/lingo3g-workbench-light.png 3840w\" sizes=\"(max-width: 720px) 100vw, 720px\">\n      </div>\n            <div style=\"position: relative\">\n        <span style=\"padding-bottom: 56.111111111111114%; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAACFElEQVQoz1VT2W7TQBT1T1QFqQkkTuLd430d24mdpBTeQEJC4gHx1P//gcO50wbKw5XtWc49y7W12uyRdzPyfoH+8h3V9RuCrENST3y2cOISH50YOz/9+32ICmzcBLafIS4HuKriGcU1Bevu/Qo+ARQBIm6GhUagCvTHC8p2RD8tqIYFTphAn64ouwl5MyJIK+zDHJWeUXNfKsxbWO/WNoE0kmZC1p4Q5D0Z5FDVYBj5WYN9VGIXpGRS4sMhwnofmhK2ev6E/vSI8fzZnLfuV1tklJs0R8TVaNiGRYd2fkI5XlBNV6Tc99IGquyx9RIDttoFbJKh7E9srhESTBhb9w8bAp6R0kcBDXINN6kQ0wInqeGmPBhXht1bQCnxMX5VIv7JGhnayIarkbwLC1YJLy5Q0Ku01shYPht4cY6U3gkLCWm1C7GnDaqkoqyG92qHdbfeo7h8NbTFKymXgM1IG7imCkm2gEtfk3owMl8AAwJmJgyRnZCpSVkYqnZBVDAMxQDiGg4vR0zMT2sDLgCHMKO0xsgSJgaQ49MzlGF5+hfK2vYoMzfjIn6IXz7HRs+P6KYzx+dsvJMmIQEF/AboELCdLmhY3fFKa2pYKi9Q6oWDPZOlZpotWdFHDqvNADZuTJCIl2WI/w9F3hVHLqY6GSHj4QP/lJ+/n/Hj1zMlVMZDSe8m7XZZ3m/fb582/6CtaawM+z+TEFicMyj/xQAAAABJRU5ErkJggg==')\" class=\"preview dark fluid\"> </span>\n        <img class=\"dark fluid\" alt=\"Lingo3G Clustering Workbench, dark theme.\" title src=\"../static/24c884ad30efa9e103c68de90c78b6af/eefce/lingo3g-workbench-dark.png\" srcset=\"../static/24c884ad30efa9e103c68de90c78b6af/dfaee/lingo3g-workbench-dark.png 180w,\n../static/24c884ad30efa9e103c68de90c78b6af/4d463/lingo3g-workbench-dark.png 360w,\n../static/24c884ad30efa9e103c68de90c78b6af/eefce/lingo3g-workbench-dark.png 720w,\n../static/24c884ad30efa9e103c68de90c78b6af/dabea/lingo3g-workbench-dark.png 1080w,\n../static/24c884ad30efa9e103c68de90c78b6af/87339/lingo3g-workbench-dark.png 1440w,\n../static/24c884ad30efa9e103c68de90c78b6af/022a0/lingo3g-workbench-dark.png 3840w\" sizes=\"(max-width: 720px) 100vw, 720px\">\n      </div>\n          </a>\n          <figcaption>\n            <p>\n              <a href=\"https://search.carrotsearch.com/#/workbench\">Lingo3G Clustering Workbench</a>\n              app clustering results from a local file.\n            </p>\n          </figcaption>\n        </figure>\n\n        <p id=\"tools-and-apis:end-user-applications:clustering-workbench:726b9e8d\">With Lingo3G Workbench you can accomplish the following:</p>\n\n        <ul>\n          <li>\n            <p id=\"tools-and-apis:end-user-applications:clustering-workbench:409a0d3a\">Cluster results from the following sources:</p>\n\n            <ul style=\"margin-top: calc(0.5 * var(--leading))\">\n              <li id=\"tools-and-apis:end-user-applications:clustering-workbench:db1fc59b\">web search engine</li>\n              <li id=\"tools-and-apis:end-user-applications:clustering-workbench:9b5b98fb\">PubMed search engine</li>\n              <li id=\"tools-and-apis:end-user-applications:clustering-workbench:30287cad\">Excel, CSV, JSON and XML files</li>\n              <li id=\"tools-and-apis:end-user-applications:clustering-workbench:a515035c\">Apache Solr</li>\n              <li id=\"tools-and-apis:end-user-applications:clustering-workbench:45e23a16\">Elasticsearch</li>\n            </ul>\n          </li>\n\n          <li>\n            <p id=\"tools-and-apis:end-user-applications:clustering-workbench:2757f51d\">\n              Change the <a href=\"/lingo3g-parameters/\">parameters</a> of\n              Lingo3G, including the structure of clusters, cluster label\n              characteristics, label filtering dictionaries and more.\n            </p>\n          </li>\n\n          <li>\n            <p id=\"tools-and-apis:end-user-applications:clustering-workbench:da5159ef\">\n              Export the clusters and search results as Excel, OpenOffice, CSV\n              or JSON.\n            </p>\n          </li>\n\n          <li>\n            <p id=\"tools-and-apis:end-user-applications:clustering-workbench:c8461e44\">\n              Visualize clusters using a pie chart and treemap, including export\n              to JPEG or PNG.\n            </p>\n          </li>\n\n          <li>\n            <p id=\"tools-and-apis:end-user-applications:clustering-workbench:6dddcf33\">\n              Export the modified Lingo3G parameters as JSON ready for pasting\n              into Lingo3G REST API requests.\n            </p>\n          </li>\n        </ul>\n\n        <p id=\"tools-and-apis:end-user-applications:clustering-workbench:d63d503f\">\n          The quickest way to use Clustering Workbench is to\n          <a href=\"https://search.carrotsearch.com/#/workbench\" target=\"_blank\">try the on-line version</a>. For other options, see\n          <a href=\"/trying-lingo3g/\">Trying Lingo3G</a>. See the\n          <a href=\"/clustering-workbench-app/#user-interface\">Clustering Workbench app</a>\n          section for a brief description of the user interface.\n        </p>\n      </section>\n    </section>\n\n    <section id=\"#tools-and-apis:apis\">\n      <h3>\n        <a class=\"anchor\" href=\"##tools-and-apis:apis\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>APIs\n      </h3>\n\n      <p id=\"#tools-and-apis:apis:4fd76d1b\">\n        Lingo3G comes with two APIs: the REST API for integration with any\n        programming language and the Java API for direct integration with Java\n        software.\n      </p>\n\n      <section id=\"tools-and-apis:apis:rest-api\">\n        <h4>\n        <a class=\"anchor\" href=\"#tools-and-apis:apis:rest-api\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>REST API\n      </h4>\n\n        <p id=\"tools-and-apis:apis:rest-api:7ce202cb\">\n          Lingo3G REST API exposes clustering as a HTTP service: you make a POST\n          request with documents to cluster in JSON format and get back a JSON\n          response with a list of clusters.\n        </p>\n\n        <p id=\"tools-and-apis:apis:rest-api:e1455a1e\">\n          To access the REST API, you need to run the\n          <a href=\"#apis-and-tools:document-clustering-server\">Document Clustering Server</a>\n          application.\n        </p>\n      </section>\n\n      <section id=\"tools-and-apis:apis:java-api\">\n        <h4>\n        <a class=\"anchor\" href=\"#tools-and-apis:apis:java-api\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Java API\n      </h4>\n\n        <p id=\"tools-and-apis:apis:java-api:2103d92b\">\n          If you develop a Java application, you can use Lingo3G as a library.\n          See <a href=\"/java-api-basics/\">Java API basics</a> for more\n          details.\n        </p>\n      </section>\n\n      <section id=\"tools-and-apis:apis:rest-or-java-api\">\n        <h4>\n        <a class=\"anchor\" href=\"#tools-and-apis:apis:rest-or-java-api\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>REST or Java API?\n      </h4>\n\n        <p id=\"tools-and-apis:apis:rest-or-java-api:a077c5a7\">Use Lingo3G REST API in the following cases:</p>\n\n        <ul>\n          <li>\n            <p id=\"tools-and-apis:apis:rest-or-java-api:e019a445\">You write your software in a language other than Java.</p>\n\n            <p id=\"tools-and-apis:apis:rest-or-java-api:2b976c2a\">\n              In particular, you can call Lingo3G REST API directly from a\n              browser-based app, just like\n              <a href=\"#tools-and-apis:end-user-apps\">Lingo3G end-user apps</a>\n              do.\n            </p>\n          </li>\n\n          <li>\n            <p id=\"tools-and-apis:apis:rest-or-java-api:c984b9b6\">\n              You write your software in Java, but you'd like to use the\n              decoupled architecture, which has the following advantages:\n            </p>\n\n            <ul id=\"tools-and-apis:decoupled-architecture\">\n              <li>\n                <p id=\"tools-and-apis:decoupled-architecture:0d21bb8a\">\n                  You can increase the number of Lingo3G REST API servers\n                  dynamically without taking down your application.\n                </p>\n              </li>\n\n              <li>\n                <p id=\"tools-and-apis:decoupled-architecture:f1489939\">\n                  You can upgrade Lingo3G to a newer version without taking down\n                  your application.\n                </p>\n              </li>\n\n              <li>\n                <p id=\"tools-and-apis:decoupled-architecture:6f6ac4a6\">\n                  If the JVM running Lingo3G DCS crashes, it will not take down\n                  your application.\n                </p>\n              </li>\n            </ul>\n          </li>\n        </ul>\n\n        <p id=\"tools-and-apis:apis:rest-or-java-api:58298450\">Use Lingo3G Java API in the following cases:</p>\n\n        <ul>\n          <li>\n            <p id=\"tools-and-apis:apis:rest-or-java-api:ad9b2f3c\">\n              You would like to avoid the JSON serialization and deserialization\n              overhead. The overhead should be negligible for small collections\n              of documents, but may become significant when clustering larger\n              numbers of documents.\n            </p>\n          </li>\n        </ul>\n      </section>\n    </section>\n\n    <section id=\"tools-and-apis:integrations\">\n      <h3>\n        <a class=\"anchor\" href=\"#tools-and-apis:integrations\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Integrations\n      </h3>\n\n      <p id=\"tools-and-apis:integrations:fb9ad9a6\">\n        Apart from apps and APIs, Lingo3G comes with plugins that perform search\n        results clustering inside two popular document indexing engines.\n      </p>\n\n      <p id=\"tools-and-apis:integrations:fc65e33c\">\n        An alternative to running Lingo3G inside your indexing engine is having\n        your application fetch search results from the engine and push them to\n        Lingo3G REST API for clustering. In addition to the universal\n        <a href=\"#tools-and-apis:decoupled-architecture\">advantages of a decoupled architecture</a>, you will save some time configuring and upgrading Lingo3G indexing\n        engine plugins.\n      </p>\n\n      <section id=\"tools-and-apis:integrations:elasticsearch\">\n        <h4>\n        <a class=\"anchor\" href=\"#tools-and-apis:integrations:elasticsearch\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Elasticsearch\n      </h4>\n\n        <p id=\"tools-and-apis:integrations:elasticsearch:4ba99c0c\">\n          The\n          <a href=\"https://github.com/carrot2/elasticsearch-carrot2\">elasticsearch-carrot2</a>\n          plugin accompanied by an extension plugin\n          <a href=\"https://github.com/carrotsearch/elasticsearch-lingo3g\">elasticsearch-lingo3g</a>\n          provide search results clustering for\n          <a href=\"https://github.com/elastic/elasticsearch\">Elasticsearch</a>.\n        </p>\n      </section>\n\n      <section id=\"tools-and-apis:integrations:apache-solr\">\n        <h4>\n        <a class=\"anchor\" href=\"#tools-and-apis:integrations:apache-solr\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Apache Solr\n      </h4>\n\n        <p id=\"tools-and-apis:integrations:apache-solr:c0c3e6e2\">\n          <a href=\"https://solr.apache.org/\">Apache Solr</a> has\n          <a href=\"https://lucene.apache.org/solr/guide/8_2/result-clustering.html\">built-in support</a>\n          for clustering search results. You can configure Solr to use Lingo3G\n          for search results clustering.\n        </p>\n      </section>\n    </section>\n  </section>\n\n  <section id=\"carrot2\">\n    <h2>\n        <a class=\"anchor\" href=\"#carrot2\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Carrot<sup>2</sup>\n      </h2>\n\n    <p id=\"carrot2:f04a3cfc\">\n      <a href=\"https://github.com/carrot2/carrot2\">Carrot<sup>2</sup></a> is an\n      open source project developed by Carrot Search. Lingo3G and Carrot<sup>2</sup>\n      live in symbiosis: Lingo3G is a commercially licensed clustering algorithm\n      built on top of the Carrot<sup>2</sup>-defined infrastructure. The source\n      code of all Lingo3G <a href=\"#tools-and-apis\">tools and APIs</a> is\n      available in the\n      <a href=\"https://github.com/carrot2/carrot2\">Carrot<sup>2</sup> GitHub repository</a>\n      under a permissive license. The only closed-source part is the Lingo3G\n      clustering algorithm.\n    </p>\n\n    <p id=\"carrot2:7d9437c1\">\n      If you'd like to work only with open source clustering algorithms, we\n      recommend Carrot<sup>2</sup>'s Lingo, the predecessor of Lingo3G. It is\n      fast, fairly accurate and works very well for small document sets.\n    </p>\n  </section>\n</article>","tableOfContents":[{"heading":"Clusters","anchor":"clusters"},{"heading":"Documents for clustering","anchor":"documents-for-clustering"},{"heading":"Tools and APIs","anchor":"tools-and-apis","sections":[{"heading":"Document Clustering Server (DCS)","anchor":"apis-and-tools:document-clustering-server"},{"heading":"End-user apps","anchor":"tools-and-apis:end-user-apps","sections":[{"heading":"Search Results Clustering","anchor":"tools-and-apis:end-user-applications:search-results-clustering"},{"heading":"Clustering Workbench","anchor":"tools-and-apis:end-user-applications:clustering-workbench"}]},{"heading":"APIs","anchor":"#tools-and-apis:apis","sections":[{"heading":"REST API","anchor":"tools-and-apis:apis:rest-api"},{"heading":"Java API","anchor":"tools-and-apis:apis:java-api"},{"heading":"REST or Java API?","anchor":"tools-and-apis:apis:rest-or-java-api"}]},{"heading":"Integrations","anchor":"tools-and-apis:integrations","sections":[{"heading":"Elasticsearch","anchor":"tools-and-apis:integrations:elasticsearch"},{"heading":"Apache Solr","anchor":"tools-and-apis:integrations:apache-solr"}]}]},{"heading":"Carrot2","anchor":"carrot2"}]}},"pageContext":{"slug":"/basic-concepts/"}},"staticQueryHashes":["1164750013"]}