Hi Charlie and Alessandro, Thank you for your responses, yes, it is a monster query, and unfortunately, this is one of our smaller and faster performing queries. We were able to run this in solr4.10.4 significantly faster than in solr6.5.1, and solr6.5.1 is as you see significantly faster than solr8.7.0.
Our application relies heavily on the grouping and ngroups as well as faceting and we have looked into other ways of getting the results that we get from those but it would be a major rewrite to try to get those in a different way and is not something we can try to do at this time. I have gone through the configs and the schema and believe I have made the correct changes in those for the defaults that changed through the updated versions but am wondering if there is something that I missed, or configured incorrectly in there that could be contributing to the slowness. Does anyone have any suggestions to try in the schema.xml or maybe in solrconfig.xml. Thanks, Russ From: Charlie Hull <ch...@opensourceconnections.com> Organization: OpenSource Connections Reply-To: "users@solr.apache.org" <users@solr.apache.org> Date: Tuesday, April 20, 2021 at 6:40 AM To: "users@solr.apache.org" <users@solr.apache.org> Subject: Re: Queries on solr cloud 8.7 take more than twice as long than same query with same documents on solr cloud 6.5.1 Hi Russell, Your complex Boolean query and the amount of new documents you're adding every day remind me of the media monitoring applications I've seen for Solr. The way these were made performant (for people like Bloomberg) was to run them as a reverse search: e.g. to test each documents against a set of stored queries, rather than running a set of queries over an index. We built Luwak (now contributed as the Lucene Monitor) for this very purpose. https://www.flax.co.uk/index.html@p=3058.html<https://www.flax.co.uk/index.html@p=3058.html> has a short writeup. As Alessandro has suggested you'll need to break down and figure out which part of your big query is causing the performance issue, which may lead you to a recent change in Solr, but I feel you also need to consider whether your overall architecture is suitable for your use case. I also wonder how maintainable your giant queries are and if anyone really understands the interplay of the various boosts and Booleans. If you've got lots of queries like this and if they're something users can generate/modify at will that won't help either. Best Charlie On 20/04/2021 00:37, Russell Bahr 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. > > 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 <mailto:rb...@manzama.com> | > www.manzama.com<http://www.manzama.com> > <http://www.manzama.com<http://www.manzama.com>> > -- Charlie Hull - Managing Consultant at OpenSource Connections Limited <www.o19s.com<http://www.o19s.com>> Founding member of The Search Network <https://thesearchnetwork.com/<https://thesearchnetwork.com>> and co-author of Searching the Enterprise <https://opensourceconnections.com/about-us/books-resources/<https://opensourceconnections.com/about-us/books-resources>> tel/fax: +44 (0)8700 118334 mobile: +44 (0)7767 825828