Hi, that's definitely a monster query full of term boosts and function query boosts plus grouping. I would recommend a "divide et impera" approach: 1) identify the main components of your query (function query boosting, term query boosting, grouping, ect) 2) start from the simplest query and compare with 6.x 3) iteratively add complexity and measure 4) you should be able to identify the culprit
A different story is if you really need such a monster query, which seems really suspicious (but would require some deep study to recommend. Cheers -------------------------- Alessandro Benedetti Apache Lucene/Solr Committer Director, R&D Software Engineer, Search Consultant www.sease.io On Tue, 20 Apr 2021 at 01:27, Russell Bahr <rb...@manzama.com> wrote: > We are trying to upgrade our solr clusters and are running into > performance issues when moving to the newer version. We are finding that > queries are taking more than double the amount of time to return when > provided with the same query and both clusters are indexed with the same > documents. The queries that we run are using booting as well as groups and > ngroups. Our original clusters were solr 4.10.4 and we experienced a > similar degradation going from 4.10.4 to 6.5.1 and were able to get around > that by splitting the work from one 30 server cluster to two clusters one > with 30 servers and a second with 35 clusters. It is not acceptable for us > to more than double our clusters again. I have gone through the > documentation and made changes to the schema and solr config as needed to > upgrade but am still not sure why we are experiencing such a dramatic > degradation in performance. > > > > We are indexing about 550000 new documents daily and updating around > 550000 documents daily as well. > > > > The clusters are configured as follows with schema and configs and a > sample query that I am running against both cluster examples. > > > > Old cluster: > Solr 6.5.1 > 31 GB heap > OpenJDK 64-Bit Server VM - 1.8.0_275-8u275-b01-1~deb9u1-b01 > > Shards -6 Replicas -5 > > *18643418 docs* > > *Avg size/doc: 2.6Kb* > > http://localhost:8983/solr/content/select?indent=on&q=*:*&wt=json > > { > > "*responseHeader*":{ > > "*zkConnected*":true, > > "*status*":0, > > "*QTime*":2665, > > "*params*":{ > > "*q*":"*:*", > > "*indent*":"on", > > "*wt*":"json", > > "*_*":"1618866411985"}}, > > "*grouped*":{ > > "*fingerprint*":{ > > "*matches*":18728759, > > "*ngroups*":14295515, > > "*groups*":[{ > > > > … > > > > New cluster: - this query takes about *10* times as long. > Solr 8.7.0 > 31 GB heap > OpenJDK 64-Bit Server VM - 11.0.9.1+1-post-Debian-1deb10u2 > > Shards -5 Replicas -5 > *18643418 docs* > > *Avg size/doc: 2.6Kb* > > http://localhost:8983/solr/content/select?indent=on&q=*:*&wt=json > > { > > "*responseHeader*":{ > > "*zkConnected*":true, > > "*status*":0, > > "*QTime*":27876, > > "*params*":{ > > "*q*":"*:*", > > "*wt*":"json", > > "*_*":"1618866396857"}}, > > "*grouped*":{ > > "*fingerprint*":{ > > "*matches*":18730577, > > "*ngroups*":13988977, > > > > … > > > > > > Solr 6.5.1 > > > > solr 6.5.1 schema.xml > > > > <?xml version="1.0" encoding="UTF-8" ?> > <schema name="articles" version="1.5"> > <uniqueKey>id</uniqueKey> > <defaultSearchField>text</defaultSearchField> > <solrQueryParser defaultOperator="AND" /> > > <fieldType name="string" class="solr.StrField" sortMissingLast="true" > omitNorms="true"/> > <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" > omitNorms="true"/> > <fieldType name="int" class="solr.TrieIntField" precisionStep="0" > positionIncrementGap="0"/> > <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" > positionIncrementGap="0"/> > <fieldType name="long" class="solr.TrieLongField" precisionStep="0" > positionIncrementGap="0"/> > <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" > positionIncrementGap="0"/> > <fieldType name="date" class="solr.TrieDateField" omitNorms="true" > precisionStep="6" positionIncrementGap="0"/> > > <!-- lowercases the entire field value, keeping it as a single > token. --> > <fieldType name="lowercase" class="solr.TextField" > positionIncrementGap="100" omitNorms="true"> > <analyzer> > <tokenizer class="solr.KeywordTokenizerFactory"/> > <filter class="solr.LowerCaseFilterFactory" /> > </analyzer> > </fieldType> > > <!-- Exact text, without word stemming --> > <fieldType name="exact_text" class="solr.TextField" > positionIncrementGap="100" omitNorms="true"> > <analyzer type="index"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" > /> > <filter class="solr.FlattenGraphFilterFactory"/> > <filter class="solr.LowerCaseFilterFactory"/> > </analyzer> > <analyzer type="query"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" > ignoreCase="true" expand="true"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" > /> > <filter class="solr.LowerCaseFilterFactory"/> > </analyzer> > </fieldType> > > <!-- Exact text, case-sensitive, without word stemming --> > <fieldType name="exact_text_and_case" class="solr.TextField" > positionIncrementGap="100" omitNorms="true"> > <analyzer type="index"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" > /> > <filter class="solr.FlattenGraphFilterFactory"/> > </analyzer> > <analyzer type="query"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" > ignoreCase="true" expand="true"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" > /> > </analyzer> > </fieldType> > > <!-- Exact text (without word stemming) but normalized. Used for the > headline field --> > <fieldType name="exact_text_normalized" class="solr.TextField" > positionIncrementGap="100" omitNorms="false"> > <analyzer type="index"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" > /> > <filter class="solr.FlattenGraphFilterFactory"/> > <filter class="solr.LowerCaseFilterFactory"/> > </analyzer> > <analyzer type="query"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" > ignoreCase="true" expand="true"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" > /> > <filter class="solr.LowerCaseFilterFactory"/> > </analyzer> > </fieldType> > > <!-- The default (stemmed) text field for general queries --> > <fieldType name="text" class="solr.TextField" positionIncrementGap="100" > omitNorms="true"> > <analyzer type="index"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" > /> > <filter class="solr.FlattenGraphFilterFactory"/> > <filter class="solr.LowerCaseFilterFactory"/> > <filter class="solr.ASCIIFoldingFilterFactory" > preserveOriginal="true"/> > <filter class="solr.SnowballPorterFilterFactory" > language="English" > /> > </analyzer> > <analyzer type="query"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" > ignoreCase="true" expand="true"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" > /> > <filter class="solr.LowerCaseFilterFactory"/> > <filter class="solr.ASCIIFoldingFilterFactory" > preserveOriginal="true"/> > <filter class="solr.SnowballPorterFilterFactory" > language="English" > /> > </analyzer> > </fieldType> > > <!-- General --> > <field name="id" type="string" indexed="true" stored="true" > multiValued="false" required="true" docValues="true"/> > <field name="django_ct" type="string" indexed="true" stored="true" > multiValued="false" docValues="true" /> > <field name="django_id" type="string" indexed="true" stored="true" > multiValued="false" docValues="true" /> > <field name="lang" type="string" indexed="true" stored="true" > multiValued="false" docValues="true" /> > > <!-- Content --> > <field name="headline" type="exact_text_normalized" indexed="true" > stored="true" multiValued="false" /> > <!-- <field name="intro" type="text" indexed="true" stored="false" > multiValued="false" /> --> > <field name="intro" type="exact_text_normalized" indexed="true" > stored="false" > multiValued="false" /> > <field name="text" type="text" indexed="true" stored="false" > multiValued="false" /> > <field name="content" type="text" indexed="false" stored="true" > multiValued="false" /> > <field name="content_fulltext" type="text" stored="false" indexed="true" > multiValued="false" /> > <field name="content_exact" type="exact_text" stored="false" > indexed="true" > multiValued="false" /> <!-- generated from `text` --> > <field name="content_exact_case" type="exact_text_and_case" stored="false" > indexed="true" multiValued="false" /> <!-- generated from `text` --> > > > <!-- Source Data --> > <field name="published_at" type="date" indexed="true" stored="true" > multiValued="false" docValues="true" /> > <field name="publication_type" type="string" indexed="true" stored="true" > multiValued="false" docValues="true" /> > <field name="feed_id" type="long" indexed="true" stored="true" > multiValued="true" docValues="true" /> > <field name="subscription" type="int" indexed="true" stored="false" > docValues="true" /> > <field name="priority_fetch" type="boolean" indexed="true" stored="true" > /> > > <!-- Ranking --> > <field name="priority" type="float" indexed="true" stored="false" > multiValued="false" docValues="true" /> > <field name="site_rank" type="long" indexed="true" stored="false" > multiValued="false" docValues="true" /> > <field name="combined_priority_weight" type="float" indexed="true" > stored="true" multiValued="false" docValues="true" /> > <field name="valid_firms" type="long" indexed="true" stored="false" > multiValued="true" docValues="true" /> > > <!-- Pre-Tagging of Saved Searches --> > <field name="ss" type="long" indexed="true" stored="false" > multiValued="true" > docValues="true" /> > <field name="tags" type="string" indexed="true" stored="true" > multiValued="true" docValues="true" /> > <field name="last_taggable_change" type="date" indexed="true" > stored="true" > multiValued="false" docValues="true" /> > <field name="tagged_topics" type="long" indexed="true" stored="true" > multiValued="true" docValues="true" /> > <field name="tagged_about_sources" type="long" indexed="true" > stored="true" > multiValued="true" docValues="true" /> > <field name="tagged_created_sources" type="long" indexed="true" > stored="true" > multiValued="true" docValues="true" /> > > <!-- Event Specific --> > <field name="end_date" type="date" indexed="true" stored="true" > multiValued="false" docValues="true" /> > <field name="start_date" type="date" indexed="true" stored="true" > multiValued="false" docValues="true" /> > > <!-- Twitter specific --> > <field name="tweeter" type="lowercase" indexed="true" stored="true" > multiValued="false" /> > > <!-- Functional --> > <field name="fingerprint" type="string" stored="false" indexed="true" > multiValued="false" docValues="true" /> > <field name="_version_" type="long" indexed="true" stored="true" > docValues="true" /> > > <!-- Copy text into content_exact --> > <copyField source="text" dest="content_exact" /> > <copyField source="text" dest="content_exact_case" /> > > <!-- Insights --> > <field name="has_signal" type="int" indexed="true" stored="true" > multiValued="false" > docValues="true" /> > > <!-- Industry Entities --> > <field name="industry_tags" type="long" indexed="true" stored="true" > multiValued="true" docValues="true" /> > > </schema> > > > > solr 6.5.1 solrconfig.xml > > > > <?xml version="1.0" encoding="UTF-8" ?> > <config> > > > <luceneMatchVersion>6.5.1</luceneMatchVersion> > > <lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" /> > <lib dir="../../../contrib/extraction/lib" regex=".*\.jar" /> > > <lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" /> > <lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" /> > > <lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" /> > <lib dir="../../../contrib/langid/lib/" regex=".*\.jar" /> > > <lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" /> > <lib dir="../../../contrib/velocity/lib" regex=".*\.jar" /> > > <lib dir="/total/crap/dir/ignored" /> > > <dataDir>${solr.data.dir:}</dataDir> > > <schemaFactory class="ClassicIndexSchemaFactory"/> > > <directoryFactory name="DirectoryFactory" > class > ="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/> > > <indexConfig> > > </indexConfig> > > <jmx /> > > <updateHandler class="solr.DirectUpdateHandler2"> > > <autoCommit> > <maxTime>600000</maxTime> > <openSearcher>false</openSearcher> > </autoCommit> > > <autoSoftCommit> > <maxTime>120000</maxTime> > </autoSoftCommit> > > > <updateLog> > <str name="dir">${solr.data.dir:}</str> > </updateLog> > > </updateHandler> > > <query> > > <maxBooleanClauses>4096</maxBooleanClauses> > > <filterCache class="solr.LRUCache" > size="3600" > initialSize="128" > autowarmCount="128"/> > > <queryResultCache class="solr.LRUCache" > size="1024" > initialSize="64" > autowarmCount="64"/> > > <documentCache class="solr.LRUCache" > size="4096" > initialSize="128" > autowarmCount="0"/> > > <enableLazyFieldLoading>true</enableLazyFieldLoading> > > <queryResultWindowSize>20</queryResultWindowSize> > > <queryResultMaxDocsCached>200</queryResultMaxDocsCached> > > <listener event="newSearcher" class="solr.QuerySenderListener"> > <arr name="queries"> > </arr> > </listener> > <listener event="firstSearcher" class="solr.QuerySenderListener"> > <arr name="queries"> > <lst> > <str name="q">static firstSearcher warming in solrconfig.xml > </str> > </lst> > </arr> > </listener> > > <useColdSearcher>true</useColdSearcher> > > <maxWarmingSearchers>4</maxWarmingSearchers> > > </query> > > <requestDispatcher handleSelect="false" > > > <requestParsers enableRemoteStreaming="false" > multipartUploadLimitInKB="2048000" /> > > <httpCaching never304="true" /> > > </requestDispatcher> > > <requestHandler name="/select" class="solr.SearchHandler"> > <lst name="defaults"> > <str name="echoParams">explicit</str> > <int name="rows">10</int> > <str name="df">text</str> > <str name="group">true</str> > <str name="group.field">fingerprint</str> > <int name="group.limit">6</int> > <str name="group.ngroups">true</str> > <int name="f.feed_id.facet.mincount">1</int> > <int name="f.linked_searches.facet.mincount">1</int> > <int name="timeAllowed">120000</int> > </lst> > > </requestHandler> > > <requestHandler name="/get" class="solr.RealTimeGetHandler"> > <lst name="defaults"> > <str name="omitHeader">true</str> > <str name="wt">json</str> > <str name="indent">true</str> > </lst> > </requestHandler> > > <requestHandler name="/export" class="solr.SearchHandler"> > <lst name="invariants"> > <str name="rq">{!xport}</str> > <str name="wt">xsort</str> > <str name="distrib">false</str> > </lst> > > <arr name="components"> > <str>query</str> > </arr> > </requestHandler> > > <requestHandler name="/update" class="solr.UpdateRequestHandler"> > </requestHandler> > > <requestHandler name="/update/extract" > startup="lazy" > class="solr.extraction.ExtractingRequestHandler" > > <lst name="defaults"> > <str name="lowernames">true</str> > <str name="uprefix">ignored_</str> > > <!-- capture link hrefs but ignore div attributes --> > <str name="captureAttr">true</str> > <str name="fmap.a">links</str> > <str name="fmap.div">ignored_</str> > </lst> > </requestHandler> > > <requestHandler name="/analysis/field" > startup="lazy" > class="solr.FieldAnalysisRequestHandler" /> > > <requestHandler name="/analysis/document" > class="solr.DocumentAnalysisRequestHandler" > startup="lazy" /> > > <requestHandler name="/admin/ping" class="solr.PingRequestHandler"> > <lst name="invariants"> > <str name="q">solrpingquery</str> > </lst> > <lst name="defaults"> > <str name="echoParams">all</str> > </lst> > </requestHandler> > > <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" > > <lst name="defaults"> > <str name="echoParams">explicit</str> > <str name="echoHandler">true</str> > </lst> > </requestHandler> > > <requestHandler name="/replication" class="solr.ReplicationHandler" > startup="lazy" /> > > <searchComponent name="spellcheck" class="solr.SpellCheckComponent"> > > <str name="queryAnalyzerFieldType">textSpell</str> > > <lst name="spellchecker"> > <str name="name">default</str> > <str name="field">name</str> > <str name="classname">solr.DirectSolrSpellChecker</str> > <str name="distanceMeasure">internal</str> > <float name="accuracy">0.5</float> > <int name="maxEdits">2</int> > <int name="minPrefix">1</int> > <int name="maxInspections">5</int> > <int name="minQueryLength">4</int> > <float name="maxQueryFrequency">0.01</float> > </lst> > > <lst name="spellchecker"> > <str name="name">wordbreak</str> > <str name="classname">solr.WordBreakSolrSpellChecker</str> > <str name="field">name</str> > <str name="combineWords">true</str> > <str name="breakWords">true</str> > <int name="maxChanges">10</int> > </lst> > > </searchComponent> > > <searchComponent name="tvComponent" class="solr.TermVectorComponent"/> > > <searchComponent name="clustering" > enable="${solr.clustering.enabled:false}" > class="solr.clustering.ClusteringComponent" > > <lst name="engine"> > <str name="name">default</str> > <str name="carrot.algorithm"> > org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str> > <str name="LingoClusteringAlgorithm.desiredClusterCountBase">20 > </str> > <str name="carrot.lexicalResourcesDir">clustering/carrot2</str> > <str name="MultilingualClustering.defaultLanguage">ENGLISH</str> > </lst> > <lst name="engine"> > <str name="name">stc</str> > <str name="carrot.algorithm"> > org.carrot2.clustering.stc.STCClusteringAlgorithm</str> > </lst> > </searchComponent> > > <requestHandler name="/clustering" > startup="lazy" > enable="${solr.clustering.enabled:false}" > class="solr.SearchHandler"> > <lst name="defaults"> > <bool name="clustering">true</bool> > <str name="clustering.engine">default</str> > <bool name="clustering.results">true</bool> > <str name="carrot.title">name</str> > <str name="carrot.url">id</str> > <str name="carrot.snippet">features</str> > <bool name="carrot.produceSummary">true</bool> > <bool name="carrot.outputSubClusters">false</bool> > > <str name="defType">edismax</str> > <str name="qf"> > text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 > </str> > <str name="q.alt">*:*</str> > <str name="rows">10</str> > <str name="fl">*,score</str> > </lst> > <arr name="last-components"> > <str>clustering</str> > </arr> > </requestHandler> > > <searchComponent name="terms" class="solr.TermsComponent"/> > > <searchComponent name="elevator" class="solr.QueryElevationComponent" > > <str name="queryFieldType">string</str> > <str name="config-file">elevate.xml</str> > </searchComponent> > > <searchComponent class="solr.HighlightComponent" name="highlight"> > <highlighting> > <fragmenter name="gap" > default="true" > class="solr.highlight.GapFragmenter"> > <lst name="defaults"> > <int name="hl.fragsize">100</int> > </lst> > </fragmenter> > <fragmenter name="regex" > class="solr.highlight.RegexFragmenter"> > <lst name="defaults"> > <int name="hl.fragsize">70</int> > <float name="hl.regex.slop">0.5</float> > <str name="hl.regex.pattern">[-\w ,/\n\"']{20,200} > </str> > </lst> > </fragmenter> > > <formatter name="html" > default="true" > class="solr.highlight.HtmlFormatter"> > <lst name="defaults"> > <str name="hl.simple.pre"><![CDATA[<em>]]></str> > <str name="hl.simple.post"><![CDATA[</em>]]></str> > </lst> > </formatter> > > <encoder name="html" > class="solr.highlight.HtmlEncoder" /> > > <fragListBuilder name="simple" > class="solr.highlight.SimpleFragListBuilder"/> > > <fragListBuilder name="single" > class="solr.highlight.SingleFragListBuilder"/> > > <fragListBuilder name="weighted" > default="true" > class="solr.highlight.WeightedFragListBuilder"/> > > <fragmentsBuilder name="default" > default="true" > class="solr.highlight.ScoreOrderFragmentsBuilder"> > </fragmentsBuilder> > > <fragmentsBuilder name="colored" > class="solr.highlight.ScoreOrderFragmentsBuilder"> > <lst name="defaults"> > <str name="hl.tag.pre"><![CDATA[ > <b style="background:yellow">,<b > style="background:lawgreen">, > <b style="background:aquamarine">,<b > style="background:magenta">, > <b style="background:palegreen">,<b > style="background:coral">, > <b style="background:wheat">,<b style="background:khaki">, > <b style="background:lime">,<b > style="background:deepskyblue">]]></str> > <str name="hl.tag.post"><![CDATA[</b>]]></str> > </lst> > </fragmentsBuilder> > > <boundaryScanner name="default" > default="true" > class="solr.highlight.SimpleBoundaryScanner"> > <lst name="defaults"> > <str name="hl.bs.maxScan">10</str> > <str name="hl.bs.chars">.,!? 	 </str> > </lst> > </boundaryScanner> > > <boundaryScanner name="breakIterator" > class="solr.highlight.BreakIteratorBoundaryScanner" > > > <lst name="defaults"> > <str name="hl.bs.type">WORD</str> > <str name="hl.bs.language">en</str> > <str name="hl.bs.country">US</str> > </lst> > </boundaryScanner> > </highlighting> > </searchComponent> > > <queryResponseWriter name="json" class="solr.JSONResponseWriter"> > <str name="content-type">text/plain; charset=UTF-8</str> > </queryResponseWriter> > > <queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" > startup="lazy"/> > > <queryResponseWriter name="xslt" class="solr.XSLTResponseWriter"> > <int name="xsltCacheLifetimeSeconds">5</int> > </queryResponseWriter> > > <!-- Legacy config for the admin interface --> > <admin> > <defaultQuery>*:*</defaultQuery> > </admin> > > </config> > > > > Solr 8.7.0 > > > > solr 8.7.0 schema.xml > > > > <?xml version="1.0" encoding="UTF-8" ?> > <schema name="articles" version="1.6"> > <uniqueKey>id</uniqueKey> > <!--Define default scorer --> > <similarity class="solr.LegacyBM25SimilarityFactory"/> > > <!--Depricated in solr 8 --> > <!--<defaultSearchField>text</defaultSearchField> --> > <!--<solrQueryParser defaultOperator="AND" /> --> > > <!--Define fieldTypes Trie* has been replaced by *PointField--> > <fieldType name="string" class="solr.StrField" sortMissingLast="true" > omitNorms="true"/> > <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" > omitNorms="true"/> > <fieldType name="pint" class="solr.IntPointField" docValues="true"/> > <fieldType name="pfloat" class="solr.FloatPointField" docValues="true"/> > <fieldType name="plong" class="solr.LongPointField" docValues="true"/> > <fieldType name="pdouble" class="solr.DoublePointField" docValues="true" > /> > <fieldType name="pdate" class="solr.DatePointField" omitNorms="true" > docValues="true"/> > > <!-- lowercases the entire field value, keeping it as a single token. --> > <fieldType name="lowercase" class="solr.TextField" > positionIncrementGap="100" omitNorms="true"> > <analyzer> > <tokenizer class="solr.KeywordTokenizerFactory"/> > <filter class="solr.LowerCaseFilterFactory" /> > </analyzer> > </fieldType> > > <!-- Exact text, without word stemming --> > <fieldType name="exact_text" class="solr.TextField" > positionIncrementGap="100" omitNorms="true"> > <analyzer type="index"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" /> > <filter class="solr.FlattenGraphFilterFactory"/> > <filter class="solr.LowerCaseFilterFactory"/> > </analyzer> > <analyzer type="query"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.SynonymGraphFilterFactory" > synonyms="synonyms.txt" ignoreCase="true" expand="true"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" /> > <filter class="solr.LowerCaseFilterFactory"/> > </analyzer> > </fieldType> > > <!-- Exact text, case-sensitive, without word stemming --> > <fieldType name="exact_text_and_case" class="solr.TextField" > positionIncrementGap="100" omitNorms="true"> > <analyzer type="index"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" /> > <filter class="solr.FlattenGraphFilterFactory"/> > </analyzer> > <analyzer type="query"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.SynonymGraphFilterFactory" > synonyms="synonyms.txt" ignoreCase="true" expand="true"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" /> > </analyzer> > </fieldType> > > <!-- Exact text (without word stemming) but normalized. Used for the > headline field --> > <fieldType name="exact_text_normalized" class="solr.TextField" > positionIncrementGap="100" omitNorms="true"> > <analyzer type="index"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" /> > <filter class="solr.FlattenGraphFilterFactory"/> > <filter class="solr.LowerCaseFilterFactory"/> > </analyzer> > <analyzer type="query"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.SynonymGraphFilterFactory" > synonyms="synonyms.txt" ignoreCase="true" expand="true"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" /> > <filter class="solr.LowerCaseFilterFactory"/> > </analyzer> > </fieldType> > > <!-- The default (stemmed) text field for general queries --> > <fieldType name="text" class="solr.TextField" positionIncrementGap="100" > omitNorms="true"> > <analyzer type="index"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" /> > <filter class="solr.FlattenGraphFilterFactory"/> > <filter class="solr.LowerCaseFilterFactory"/> > <filter class="solr.ASCIIFoldingFilterFactory" > preserveOriginal="true"/> > <filter class="solr.SnowballPorterFilterFactory" > language="English" /> > </analyzer> > <analyzer type="query"> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.SynonymGraphFilterFactory" > synonyms="synonyms.txt" ignoreCase="true" expand="true"/> > <filter class="solr.WordDelimiterGraphFilterFactory" > generateWordParts="1" generateNumberParts="0" > catenateWords="1" catenateNumbers="1" catenateAll="0" > splitOnNumerics="0" > preserveOriginal="0" splitOnCaseChange="0" > types="content-types.txt" /> > <filter class="solr.LowerCaseFilterFactory"/> > <filter class="solr.ASCIIFoldingFilterFactory" > preserveOriginal="true"/> > <filter class="solr.SnowballPorterFilterFactory" > language="English" /> > </analyzer> > </fieldType> > > <!-- General --> > <field name="id" type="string" indexed="true" stored="true" > multiValued="false" required="true" docValues="true"/> > <field name="django_ct" type="string" indexed="true" stored="true" > multiValued="false" docValues="true" /> > <field name="django_id" type="string" indexed="true" stored="true" > multiValued="false" docValues="true" /> > <field name="lang" type="string" indexed="true" stored="true" > multiValued="false" docValues="true" /> > > <!-- Content --> > <field name="headline" type="exact_text_normalized" indexed="true" > stored="true" multiValued="false" /> > <!-- <field name="intro" type="text" indexed="true" stored="false" > multiValued="false" /> --> > <field name="intro" type="exact_text_normalized" indexed="true" > stored="false" multiValued="false" /> > <field name="text" type="text" indexed="true" stored="false" > multiValued="false" /> > <field name="content" type="text" indexed="false" stored="true" > multiValued="false" /> > <field name="content_fulltext" type="text" stored="false" indexed="true" > multiValued="false" /> > <field name="content_exact" type="exact_text" stored="false" > indexed="true" multiValued="false" /> <!-- generated from > `text` --> > <field name="content_exact_case" type="exact_text_and_case" > stored="false" indexed="true" multiValued="false" /> <!-- generated from > `text` --> > > > <!-- Source Data --> > <field name="published_at" type="pdate" indexed="true" stored="true" > multiValued="false" docValues="true" /> > <field name="publication_type" type="string" indexed="true" stored="true" > multiValued="false" docValues="true" /> > <field name="feed_id" type="plong" indexed="true" stored="true" > multiValued="true" docValues="true" /> > <field name="subscription" type="pint" indexed="true" stored="false" > docValues="true" /> > <field name="priority_fetch" type="boolean" indexed="true" stored="true" > /> > > <!-- Ranking --> > <field name="priority" type="pfloat" indexed="true" stored="false" > multiValued="false" docValues="true" /> > <field name="site_rank" type="plong" indexed="true" stored="false" > multiValued="false" docValues="true" /> > <field name="combined_priority_weight" type="pfloat" indexed="true" > stored="true" multiValued="false" docValues="true" /> > <field name="valid_firms" type="plong" indexed="true" stored="false" > multiValued="true" docValues="true" /> > > <!-- Pre-Tagging of Saved Searches --> > <field name="ss" type="plong" indexed="true" stored="false" > multiValued="true" docValues="true" /> > <field name="tags" type="string" indexed="true" stored="true" > multiValued="true" docValues="true" /> > <field name="last_taggable_change" type="pdate" indexed="true" > stored="true" multiValued="false" docValues="true" /> > <field name="tagged_topics" type="plong" indexed="true" stored="true" > multiValued="true" docValues="true" /> > <field name="tagged_about_sources" type="plong" indexed="true" > stored="true" multiValued="true" docValues="true" /> > <field name="tagged_created_sources" type="plong" indexed="true" > stored="true" multiValued="true" docValues="true" /> > > <!-- Event Specific --> > <field name="end_date" type="pdate" indexed="true" stored="true" > multiValued="false" docValues="true" /> > <field name="start_date" type="pdate" indexed="true" stored="true" > multiValued="false" docValues="true" /> > > <!-- Twitter specific --> > <field name="tweeter" type="lowercase" indexed="true" stored="true" > multiValued="false" /> > > <!-- Functional --> > <field name="fingerprint" type="string" stored="false" indexed="true" > multiValued="false" docValues="true" /> > <field name="_version_" type="plong" indexed="true" stored="true" > docValues="true" /> > > <!-- Copy text into content_exact --> > <copyField source="text" dest="content_exact" /> > <copyField source="text" dest="content_exact_case" /> > > <!-- Insights --> > <field name="has_signal" type="pint" indexed="true" stored="true" > multiValued="false" > docValues="true" /> > > <!-- Industry Entities --> > <field name="industry_tags" type="plong" indexed="true" stored="true" > multiValued="true" docValues="true" /> > > </schema> > > > > solr 8.7.0 solrconfig.xml > > > > <?xml version="1.0" encoding="UTF-8" ?> > <config> > <luceneMatchVersion>8.7.0</luceneMatchVersion> > <lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" > regex=".*\.jar" /> > <lib dir="${solr.install.dir:../../../..}/dist/" > regex="solr-cell-\d.*\.jar" /> > > <lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" > regex=".*\.jar" /> > <lib dir="${solr.install.dir:../../../..}/dist/" > regex="solr-clustering-\d.*\.jar" /> > > <lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" > regex=".*\.jar" /> > <lib dir="${solr.install.dir:../../../..}/dist/" > regex="solr-langid-\d.*\.jar" /> > > <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-ltr-\d.*\.jar" > /> > > <lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" > regex=".*\.jar" /> > <lib dir="${solr.install.dir:../../../..}/dist/" > regex="solr-velocity-\d.*\.jar" /> > <dataDir>${solr.data.dir:}</dataDir> > <directoryFactory name="DirectoryFactory" > > class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/> > > <schemaFactory class="ClassicIndexSchemaFactory"> > </schemaFactory> > <codecFactory class="solr.SchemaCodecFactory"/> > > <indexConfig> > > <mergePolicyFactory > class="org.apache.solr.index.TieredMergePolicyFactory"> > <int name="maxMergeAtOnce">10</int> > <int name="segmentsPerTier">2</int> > <double name="noCFSRatio">0.1</double> > </mergePolicyFactory> > > <lockType>${solr.lock.type:native}</lockType> > > </indexConfig> > > <jmx /> > > <updateHandler class="solr.DirectUpdateHandler2"> > > <updateLog> > <str name="dir">${solr.ulog.dir:}</str> > <int name="numVersionBuckets">${solr.ulog.numVersionBuckets:65536}</int> > </updateLog> > > <autoCommit> > <maxTime>600000</maxTime> > <maxDocs>1000000</maxDocs> > <openSearcher>false</openSearcher> > </autoCommit> > > <autoSoftCommit> > <maxTime>120000</maxTime> > </autoSoftCommit> > > </updateHandler> > > <query> > > <maxBooleanClauses>4096</maxBooleanClauses> > > <slowQueryThresholdMillis>100000</slowQueryThresholdMillis> > > <filterCache class="solr.CaffeineCache" > size="3600" > initialSize="2048" > autowarmCount="2048"/> > > <queryResultCache class="solr.CaffeineCache" > size="1024" > initialSize="512" > autowarmCount="512"/> > > <documentCache class="solr.CaffeineCache" > size="4096" > initialSize="1024" > autowarmCount="1024"/> > > <cache name="perSegFilter" > class="solr.CaffeineCache" > size="10" > initialSize="0" > autowarmCount="10" > regenerator="solr.NoOpRegenerator" /> > > <enableLazyFieldLoading>true</enableLazyFieldLoading> > > <queryResultWindowSize>20</queryResultWindowSize> > > <queryResultMaxDocsCached>200</queryResultMaxDocsCached> > > <listener event="newSearcher" class="solr.QuerySenderListener"> > <arr name="queries"> > </arr> > </listener> > <listener event="firstSearcher" class="solr.QuerySenderListener"> > <arr name="queries"> > <lst> > <str name="q">static firstSearcher warming in solrconfig.xml</str> > </lst> > </arr> > </listener> > > <useColdSearcher>true</useColdSearcher> > > <maxWarmingSearchers>4</maxWarmingSearchers> > > </query> > > <requestDispatcher> > > <requestParsers enableRemoteStreaming="false" > multipartUploadLimitInKB="2048000" /> > > <httpCaching never304="true" /> > > </requestDispatcher> > > <requestHandler name="/select" class="solr.SearchHandler"> > <lst name="defaults"> > <str name="echoParams">explicit</str> > <int name="rows">10</int> > <str name="df">text</str> > <str name="q.op">AND</str> > <str name="group">true</str> > <str name="group.field">fingerprint</str> > <int name="group.limit">6</int> > <str name="group.ngroups">true</str> > <int name="f.feed_id.facet.mincount">1</int> > <int name="f.linked_searches.facet.mincount">1</int> > <int name="timeAllowed">120000</int> > </lst> > > </requestHandler> > > <requestHandler name="/get" class="solr.RealTimeGetHandler"> > <lst name="defaults"> > <str name="omitHeader">true</str> > <str name="wt">json</str> > <str name="indent">true</str> > </lst> > </requestHandler> > > <requestHandler name="/export" class="solr.SearchHandler"> > <lst name="invariants"> > <str name="rq">{!xport}</str> > <str name="wt">xsort</str> > <str name="distrib">false</str> > </lst> > > <arr name="components"> > <str>query</str> > </arr> > </requestHandler> > > <requestHandler name="/update" class="solr.UpdateRequestHandler"> > </requestHandler> > > <requestHandler name="/update/extract" > startup="lazy" > class="solr.extraction.ExtractingRequestHandler" > > <lst name="defaults"> > <str name="lowernames">true</str> > <str name="uprefix">ignored_</str> > <str name="captureAttr">true</str> > <str name="fmap.a">links</str> > <str name="fmap.div">ignored_</str> > </lst> > </requestHandler> > > <requestHandler name="/analysis/field" > startup="lazy" > class="solr.FieldAnalysisRequestHandler" /> > > <requestHandler name="/analysis/document" > class="solr.DocumentAnalysisRequestHandler" > startup="lazy" /> > > <requestHandler name="/admin/ping" class="solr.PingRequestHandler"> > <lst name="invariants"> > <str name="q">solrpingquery</str> > </lst> > <lst name="defaults"> > <str name="echoParams">all</str> > </lst> > </requestHandler> > > <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" > > <lst name="defaults"> > <str name="echoParams">explicit</str> > <str name="echoHandler">true</str> > </lst> > </requestHandler> > > <requestHandler name="/replication" class="solr.ReplicationHandler" > startup="lazy" /> > > <searchComponent name="spellcheck" class="solr.SpellCheckComponent"> > > <str name="queryAnalyzerFieldType">textSpell</str> > > <lst name="spellchecker"> > <str name="name">default</str> > <str name="field">name</str> > <str name="classname">solr.DirectSolrSpellChecker</str> > <str name="distanceMeasure">internal</str> > <float name="accuracy">0.5</float> > <int name="maxEdits">2</int> > <int name="minPrefix">1</int> > <int name="maxInspections">5</int> > <int name="minQueryLength">4</int> > <float name="maxQueryFrequency">0.01</float> > </lst> > > <lst name="spellchecker"> > <str name="name">wordbreak</str> > <str name="classname">solr.WordBreakSolrSpellChecker</str> > <str name="field">name</str> > <str name="combineWords">true</str> > <str name="breakWords">true</str> > <int name="maxChanges">10</int> > </lst> > > </searchComponent> > > <searchComponent name="tvComponent" class="solr.TermVectorComponent"/> > > <searchComponent name="clustering" > enable="${solr.clustering.enabled:false}" > class="solr.clustering.ClusteringComponent" > > <lst name="engine"> > <str name="name">default</str> > <str > name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str> > <str name="LingoClusteringAlgorithm.desiredClusterCountBase">20</str> > <str name="carrot.lexicalResourcesDir">clustering/carrot2</str> > <str name="MultilingualClustering.defaultLanguage">ENGLISH</str> > </lst> > <lst name="engine"> > <str name="name">stc</str> > <str > name="carrot.algorithm">org.carrot2.clustering.stc.STCClusteringAlgorithm</str> > </lst> > </searchComponent> > > <requestHandler name="/clustering" > startup="lazy" > enable="${solr.clustering.enabled:false}" > class="solr.SearchHandler"> > <lst name="defaults"> > <bool name="clustering">true</bool> > <str name="clustering.engine">default</str> > <bool name="clustering.results">true</bool> > <str name="carrot.title">name</str> > <str name="carrot.url">id</str> > <str name="carrot.snippet">features</str> > <bool name="carrot.produceSummary">true</bool> > <bool name="carrot.outputSubClusters">false</bool> > > <str name="defType">edismax</str> > <str name="qf"> > text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 > </str> > <str name="q.alt">*:*</str> > <str name="rows">10</str> > <str name="fl">*,score</str> > </lst> > <arr name="last-components"> > <str>clustering</str> > </arr> > </requestHandler> > > <searchComponent name="terms" class="solr.TermsComponent"/> > > <searchComponent name="elevator" class="solr.QueryElevationComponent" > > <str name="queryFieldType">string</str> > <str name="config-file">elevate.xml</str> > </searchComponent> > <searchComponent class="solr.HighlightComponent" name="highlight"> > <highlighting> > <fragmenter name="gap" > default="true" > class="solr.highlight.GapFragmenter"> > <lst name="defaults"> > <int name="hl.fragsize">100</int> > </lst> > </fragmenter> > > <fragmenter name="regex" > class="solr.highlight.RegexFragmenter"> > <lst name="defaults"> > <int name="hl.fragsize">70</int> > <float name="hl.regex.slop">0.5</float> > <str name="hl.regex.pattern">[-\w ,/\n\"']{20,200}</str> > </lst> > </fragmenter> > > <formatter name="html" > default="true" > class="solr.highlight.HtmlFormatter"> > <lst name="defaults"> > <str name="hl.simple.pre"><![CDATA[<em>]]></str> > <str name="hl.simple.post"><![CDATA[</em>]]></str> > </lst> > </formatter> > > <encoder name="html" > class="solr.highlight.HtmlEncoder" /> > > <fragListBuilder name="simple" > class="solr.highlight.SimpleFragListBuilder"/> > > <fragListBuilder name="single" > class="solr.highlight.SingleFragListBuilder"/> > > <fragListBuilder name="weighted" > default="true" > class="solr.highlight.WeightedFragListBuilder"/> > <fragmentsBuilder name="default" > default="true" > class="solr.highlight.ScoreOrderFragmentsBuilder"> > </fragmentsBuilder> > > <fragmentsBuilder name="colored" > class="solr.highlight.ScoreOrderFragmentsBuilder"> > <lst name="defaults"> > <str name="hl.tag.pre"><![CDATA[ > <b style="background:yellow">,<b style="background:lawgreen">, > <b style="background:aquamarine">,<b > style="background:magenta">, > <b style="background:palegreen">,<b style="background:coral">, > <b style="background:wheat">,<b style="background:khaki">, > <b style="background:lime">,<b > style="background:deepskyblue">]]></str> > <str name="hl.tag.post"><![CDATA[</b>]]></str> > </lst> > </fragmentsBuilder> > > <boundaryScanner name="default" > default="true" > class="solr.highlight.SimpleBoundaryScanner"> > <lst name="defaults"> > <str name="hl.bs.maxScan">10</str> > <str name="hl.bs.chars">.,!? 	 </str> > </lst> > </boundaryScanner> > > <boundaryScanner name="breakIterator" > class="solr.highlight.BreakIteratorBoundaryScanner"> > <lst name="defaults"> > <str name="hl.bs.type">WORD</str> > <str name="hl.bs.language">en</str> > <str name="hl.bs.country">US</str> > </lst> > </boundaryScanner> > </highlighting> > </searchComponent> > > <queryResponseWriter name="json" class="solr.JSONResponseWriter"> > <str name="content-type">text/plain; charset=UTF-8</str> > </queryResponseWriter> > > <queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" > startup="lazy"/> > > <queryResponseWriter name="xslt" class="solr.XSLTResponseWriter"> > <int name="xsltCacheLifetimeSeconds">5</int> > </queryResponseWriter> > > <admin> > <defaultQuery>*:*</defaultQuery> > </admin> > > </config> > > > > Solr Query examples. > > > > *:* > > > > > > > > {!boost > b=sum(product(99999999999,has_signal),product(pow(priority,10),pow(recip(abs(ms(NOW/HOUR,published_at)),2.77e-09,1,1),5)))}((tags:Real_Est > OR (((headline:"real estate"^99999999999 OR headline:"commercial > development"^99999999999 OR headline:"commercial developer"^99999999999 OR > "Real Estate" OR "Real Property" OR "property law" OR "Property Deal" OR > "Property Sale" OR "purchase of land" OR "Homeowners Association" OR > content_exact:"HOA" OR "Board of Realtors" OR content_exact:"Property > Development" OR "CAP Rate" OR content_exact:"Housing Demand" OR "CRE > Finance Council" OR "Housing Supply" OR "Property Tax" OR > content_exact:"FHA" OR content_exact:"Fully Leased" OR > content_exact:"Represented the Buyer" OR content_exact:"Design/Build" OR > "Ad Valorem" OR "Anchor Tenant" OR "Build to suit" OR "Certificate of > Occupancy" OR "Eminent Domain" OR "new office building" OR "new office > development" OR "Adverse possession" OR "Allodial title" OR "planning law" > OR "planning permission" OR "housebuilder" OR "housebiilding" OR > content_exact:"housebuilder" OR "Fee Simple" OR "Fee tail" OR "Quiet Title" > OR "Restraint on alienation" OR "Rule in Shelley" OR "Doctrine of worthier > title" OR "Worthier Title Doctrine" OR content_exact:"Easement" OR > "Equitable servitude")) OR ((tagged_topics:(27) OR > tagged_about_sources:(27) OR tagged_created_sources:(27)) OR > (tagged_topics:(107263) OR tagged_about_sources:(107263) OR > tagged_created_sources:(107263)) OR (((content_exact:"Office Building" OR > "Office Complex" OR "Office Tower" OR "Office Space" OR "Office Center" OR > "Office Campus" OR "Class A Office" OR "Class B Office" OR "Class C Office" > OR content_exact:"Class A Building" OR content_exact:"Class B Building" OR > content_exact:"Class C Building" OR content_exact:"Class A Tower" OR > content_exact:"Class B Tower" OR content_exact:"Class C Tower" OR > content_exact:"corporate office" OR "office property" OR "office > properties"))) OR (tagged_topics:(119) OR tagged_about_sources:(119) OR > tagged_created_sources:(119)))) AND NOT ("intellectual property" OR "plan > testimonial")) AND ((((tags:"geo_morocco"^0.9 OR *:*) OR > (content_exact:"March Madness"^0.19999 OR headline:"recognizes"^0.19999 OR > headline:("holiday sale" OR "tech deals" OR "Black Friday Sale" OR "Black > Friday deals"~5 OR "Market Analysis" OR wildfire OR arrested OR stabbed OR > "celebrate birthday"~5 OR "market expected boom"~5 OR "what to expect" OR > "where to find")^0.199999999999 OR content_exact:"state championship > game"^0.19999 OR content_exact:"playstation 4"^0.1999999999999 OR > content_exact:"recover after shock"^0.19999 OR content_exact:"losing > streak"^0.19999 OR content_exact:"with win over"^0.19999 OR > headline:(content_exact:"Islamic state")^0.19999 OR > headline:("accident")^0.1999999999 OR > headline:(content_exact:"badgers")^0.19999 headline:("part time" OR "full > time" OR "accuweather" OR "snowstorm" OR PHOTOS)^0.199999999999 OR > headline:(content_exact:"investor alert")^0.19999999999999 OR > headline:(content_exact:"stock")^0.19999999 OR > headline:(content_exact:"cuts holdings" OR content_exact:"raises holdings" > OR content_exact:"reduces holdings")^0.19999999 OR > headline:("ResearchAndMarkets.com")^0.19999 OR > headline:(content_exact:"conference")^0.19999 OR > headline:(content_exact:"of the year")^0.19999 OR > headline:(content_exact:"rankings")^0.19999 OR ("edged > higher")^0.1999999999999999 OR ("edged lower")^0.1999999999999999 OR > headline:(content_exact:"blue devils")^0.19999 OR > headline:(content_exact:"shares climb")^0.19999 OR > headline:(content_exact:"volunteer")^0.19999999 OR > headline:(content_exact:"murderer")^0.19999 OR > headline:(content_exact:"murdered")^0.19999 OR > headline:(content_exact:"hurricane")^0.19999 OR > headline:(content_exact:"tornado")^0.19999 OR > headline:(content_exact:"storm")^0.19999 OR headline:(content_exact:"found > dead")^0.19999 OR headline:(content_exact:"celebrity")^0.19999999 OR > headline:(content_exact:"registration underway")^0.19 OR > headline:(content_exact:"boko haram")^0.19999999 OR > headline:(content_exact:"police arrest")^0.19999 OR "human remains"^0.1999 > OR "slaying"^0.1999 OR "home prices"^0.1999 OR "transfer news"^0.1999 OR > headline:("militia")^0.19999999 OR (content_exact:"shooting")^0.19999 OR > headline:("ISIS")^0.19999999 OR > headline:(content_exact:"prostitution")^0.19999999 OR > headline:(content_exact:"drugs")^0.19999 OR > content_exact:"winger"^0.19999999 OR "happy birthday"^0.19999 OR "happy > easter"^0.19999 OR "merry christmas"^0.19999 OR "reported at trading > volume"^0.199999 OR "most active stocks"^0.199999 OR "loss > narrows"^0.199999 OR "earnings conference"^0.199999 OR "put > options"^0.199999 OR "trading range"^0.199999 OR "week low"^0.199999 OR > "week high"^0.199999 OR "neutral"^0.199999 OR "downgraded"^0.199999 OR > "upgraded"^0.199999 OR "average rating"^0.199999 OR "financial > report"^0.19999999 OR "quarterly"^0.199999 OR "q1 loss"^0.19 OR "q3 > loss"^0.19999999 OR "q4 loss"^0.19999999 OR "q2 loss"^0.19999999 OR > "financial results"^0.1999999 OR "upgrades"^0.19999999 OR > "upgraded"^0.19999 OR "downgrades"^0.19999 OR "downgraded"^0.19999 OR > "consensus estimate"^0.19999 OR "analyst estimate"^0.19999 OR "consensus > analyst estimate"^0.199999 OR "q1 results"^0.19999 OR "q2 results"^0.19999 > OR "q3 results"^0.19999999 OR "q4 results"^0.19999 OR > content_exact:"EPS"^0.19999999 OR "fiscal results"^0.19999 OR "financial > results"^0.1999 OR "profits up"^0.19999999 OR "profit down"^0.19999 OR > "quarter report"^0.19999 OR "quarterly report"^0.19 OR "earnings"^0.19999 > OR "quarterly results"^0.19999999 OR "earnings report"^0.19999999 OR > "quarterly earnings"^0.19999 OR content_exact:"narrows"^0.19999 OR > content_exact:"quarter loss"^0.19999999 OR content_exact:"quarterly > losses"^0.19999 OR content_exact:"quarterly loss"^0.19999 OR > content_exact:"quarter results"^0.19999999 OR content_exact:"report of > earnings"^0.19999999 OR "earnings release"^0.19999999 OR "research > reports"^0.19999999 OR "target raised"^0.19999999 OR "try any of our > foolish"^0.19999999 OR "jim cramer"^0.19999999 OR > content_exact:"jumps"^0.19 OR headline:(content_exact:"coverage")^0.1999999 > OR headline:("rose stock"~5)^0.1999999999 OR headline:("declined > stock"~5)^0.1999999999 OR headline:("FOREX")^0.199999999 OR > content_exact:"unloads"^0.19999999 OR "shares drops"^0.19999999 OR > "research and markets"^0.19999999 OR headline:("price target")^0.1999999999 > OR headline:("early movers")^0.1999999999 OR > headline:("rating")^0.1999999999 OR headline:("stock")^0.1999999999 OR > headline:("stocks")^0.199999999 OR "U.S. stocks were lower"^0.1999999 OR > headline:("slides")^0.199999999 OR headline:("wall st")^0.199999999 OR > headline:("indexes")^0.199999999 OR headline:("financial > results")^0.1999999999999999 OR headline:("closing bell")^0.19 OR > headline:(content_exact:"higher volume")^0.1999 OR headline:("trading > lower")^0.1999 OR headline:(content_exact:"research and markets")^0.1999999 > OR (content_exact:"mid-day changers")^0.1999999 OR (headline:"a > share")^0.1999999 OR (headline:"insider buying")^0.1999999 OR > (headline:"short interest")^0.1999999 OR (headline:"shares of")^0.1999999 > OR (headline:"market movers")^0.1999999 OR > (headline:"analyst")^0.19999999999 OR (headline:"analysts")^0.19999999999 > OR (headline:"dow spikes")^0.19999999999 OR (headline:"dow > movers")^0.1999999 OR (headline:"bidness")^0.1999999)) AND NOT > ((headline:("market report" OR "market by offering" OR "market > segmentation"~6 OR "applications forecast" OR "market tremendous growth"~8 > OR "market significant growth"~8 OR "market status" OR "forecast 2019"~4 OR > "forecast 2020"~4 OR "forecast 2021"~4 OR "forecast 2022"~4 OR "forecast > 2023"~4 OR "forecast 2024"~4 OR "forecast 2025"~4 OR "forecast 2026"~4 OR > "forecast 2027"~4 OR "valuation reach"~4 OR "market grow during"~5 OR > "market survey report"~5 OR "holding cut by") OR headline:("investing > advise" OR "market to witness" OR "position decreased by" OR "increases > stake" OR "market study" OR "market size" OR "global forecast" OR "stock > analysts" OR "sentiment shift") OR headline:("global industry") OR > headline:("dow gains") OR headline:("forecast industry"~5 OR "worldwide > forecast"~7 OR "market analysis"~5) OR headline:("researchandmarkets.com") > OR headline:("morning movers") OR headline:("markets now") OR > headline:("market trends"~5) OR headline:("market estimated valued"~9) OR > headline:("market projected to grow") OR headline:("market expected to > grow"~6) OR headline:("falls to low"~6) OR headline:("Zacks investment > research") OR headline:("SWOT analysis") OR "equal weight" OR > headline:("brokerage recommendations") OR headline:("ratings outlook") OR > headline:("financial stocks") OR headline:("equities research") OR > headline:("given average recommendation") OR headline:("from analysts") OR > headline:("target price") OR "Barclays target price"~15 OR > headline:("Consensus Recommendation") OR headline:("Coverage initiated") OR > headline:("Wall street opens lower") OR headline:("Wall street pulls back") > OR headline:("Wall street advances") OR headline:("Wall street opens > higher") OR headline:("REPORTS ACQUISITION BY DIRECTOR") OR > headline:("REPORTS ACQUISITION BY Senior") OR headline:("REPORTS > ACQUISITION BY VP") OR headline:("REPORTS ACQUISITION BY executive") OR > headline:("REPORTS ACQUISITION BY CEO") headline:("cut sell"~3) OR > headline:("lowered sell"~3) OR headline:("PT lowered") OR headline:("cut > neutral"~3) OR headline:("lowered neutral"~3) OR headline:("cut hold"~3) OR > headline:("lowered hold"~3) OR headline:("hold rating"~3) OR > headline:("raised buy"~4) OR headline:("raised to") OR headline:("lowered > buy"~4) OR headline:("rating buy"~4) OR headline:("rating add"~4) OR > headline:("lowered underperform"~3) OR headline:("outperform") OR > headline:("downgraded by") OR headline:("upgraded by") OR > headline:("downgraded to") OR headline:("upgraded to") OR > headline:("announces dividend"~3) OR headline:("plans dividend"~3) > headline:("issues dividend"~3) OR headline:("shares sold") OR > headline:("shares bought") OR ("shares reached high"~9) OR "research note > issued to investors" OR "move per share"~8) OR "apply now" OR > "Undergraduate degree or equivalent"~6 OR "your cv" OR "Add my CV to the" > OR "We are currently looking for a" OR "a competitive salary" OR > headline:("roadshow" OR "terms of service violation") OR headline:("best > deals"~4 OR "thanksgiving travel"~4 OR "thanksgiving guide"~4 OR "happy > thanksgiving" OR "best of 2018"~5 OR "black friday hours"~5 OR "black > Friday freebies"~5 OR "stores open thanksgiving"~5 OR "stores open > christmas"~5 OR "cyber monday" OR "black friday deal"~8 OR "thanksgiving > dinner" OR santa OR "wedding announcements" OR "holiday sales" OR "white > nationalist" OR "shooting" OR "mall shootings" OR "stabbing" OR "holiday > gift" OR "family killed"~7 OR "killed by car" OR "apply now" OR obituary OR > "entry level" OR "support worker" OR "a career within" OR "recipe" OR > "Exclusive opportunity" OR "content acquisition")))) AND NOT > ((feed_id:"101505" OR feed_id:"95622" OR feed_id:"104135" OR > feed_id:"95624" OR feed_id:"6537" OR feed_id:"104138" OR feed_id:"104140" > OR feed_id:"95629" OR feed_id:"92622" OR feed_id:"104366" OR > feed_id:"99342" OR feed_id:"82520" OR feed_id:"94172" OR feed_id:"11967")) > AND ((tags:content_us^999999999999) OR *:*) AND (((tags:"news_major"^99) OR > feed_id:"108735"^99999999 OR feed_id:"68677"^99999999 OR > feed_id:"89672"^99999999 OR feed_id:"94600"^99999999 OR > feed_id:"95627"^99999999 OR feed_id:"11501"^99999999 OR > feed_id:"3470"^99999999 OR feed_id:"53326"^99999999 OR > feed_id:"42417"^99999999 OR feed_id:"43069"^99999999 OR > feed_id:"108734"^99999999 OR feed_id:"75797"^99999999 OR > feed_id:"107094"^99999999 OR feed_id:"48503"^99999999 OR > feed_id:"105598"^99999999 OR feed_id:"11675"^99999999 OR > feed_id:"28476"^99999999 OR feed_id:"57757"^99999999 OR > feed_id:"99741"^99999999 OR feed_id:"70591"^99999999) OR *:*)) /* None */ > > > > > > > > > > Filter query parameters: > > (valid_firms:(0 OR 1) OR (*:* AND -valid_firms:[* TO *])) > > > > publication_type:(news OR blog OR press_release OR publication) > > > > lang:(en OR es) > > > > published_at:["2021-04-01T07:00:00Z" TO "2021-04-15T16:42:28.150394Z"] > > > > OLD cluster query time > > "*QTime*":1209, > > > > NEW cluster query time – almost twice as long > > "*QTime*":2316, > > > > Thank you in advance for any help you can provide. > > > > > > [image: Logo Description automatically generated] > > a MODERN GOVERNANCE company > > *Russell Bahr* > > *Lead Infrastructure Engineer* > > 543 NW York Drive | Suite 100 | Bend, OR 97703 > Direct: 541-306-3271 | rb...@manzama.com | www.manzama.com >