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 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\&quot;&apos;]{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">.,!? &#9;&#10;&#13;</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\&quot;&apos;]{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">.,!? &#9;&#10;&#13;</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>


--
Charlie Hull - Managing Consultant at OpenSource Connections Limited <www.o19s.com> Founding member of The Search Network <https://thesearchnetwork.com/> and co-author of Searching the Enterprise <https://opensourceconnections.com/about-us/books-resources/>
tel/fax: +44 (0)8700 118334
mobile: +44 (0)7767 825828

Reply via email to