[
https://issues.apache.org/jira/browse/SOLR-9521?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Russell Black updated SOLR-9521:
--------------------------------
Attachment: LogFileWarmer.java
> Warm first searcher with queries from log file
> ----------------------------------------------
>
> Key: SOLR-9521
> URL: https://issues.apache.org/jira/browse/SOLR-9521
> Project: Solr
> Issue Type: Improvement
> Security Level: Public(Default Security Level. Issues are Public)
> Components: search
> Affects Versions: 6.2
> Reporter: Russell Black
> Priority: Minor
> Labels: performance
> Attachments: LogFileWarmer.java
>
>
> The only way I know of to warm the first searcher before it is opened, is to
> hard code warming queries in
> {code:xml}<listener event="newSearcher"
> class="solr.QuerySenderListener">{code}
> For our application, hard-coding is not a good solution since some of our
> more expensive filter queries change periodically.
> I have created a plugin that warms the first searcher from the most recent
> entries in the log files. In my opinion this capability ought to be part of
> solr, so I'm contributing my code in the hopes that it can be incorporated.
> It works by wrapping an instance of QuerySenderListener, setting its
> "queries" argument from recent queries from the log files. It is configured
> like this:
> {code:xml}
> <listener event="firstSearcher" class="solrplugin.LogFileWarmer">
> <!-- The arguments shown below are the defaults and could be omitted -->
> <!-- A list of filenames to search. They are searched in the order
> listed, and the lines in each file are searched in reverse
> order, so that the most recent queries are used to warm the
> cache.
> -->
> <str name="file">logs/solr.log</str>
> <str name="file">logs/solr.log.1</str>
> <str name="file">logs/solr.log.2</str>
> <str name="file">logs/solr.log.3</str>
> <str name="file">logs/solr.log.4</str>
> <str name="file">logs/solr.log.5</str>
> <str name="file">logs/solr.log.6</str>
> <str name="file">logs/solr.log.7</str>
> <str name="file">logs/solr.log.8</str>
> <str name="file">logs/solr.log.9</str>
>
> <!-- The maximum number of queries to use from logs -->
> <int name="count">100</int>
> <!-- The maximum number of log lines to search in order to find <count>
> queries-->
> <int name="maxLines">1000000</int>
> <!-- The regular expression that matches the query string from the log
> line. It expects the query string to be in capture group 1. -->
> <str name="regex">path=/select params=\{([^ ]+)\} </str>
> <!-- if no queries can be found in the log files, fall back to this -->
> <arr name="fallback">
> <lst><str name="q">solr</str><str name="sort">price asc</str></lst>
> <lst><str name="q">rocks</str><str name="sort">weight asc</str></lst>
> </arr>
> <listener>
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]