plugin.tx_meilisearch { enabled = {$plugin.tx_meilisearch.enabled} enableDebugMode = 0 general { dateFormat.date = d.m.Y H:i } meilisearch { read { scheme = {$plugin.tx_meilisearch.meilisearch.scheme} host = {$plugin.tx_meilisearch.meilisearch.host} port = {$plugin.tx_meilisearch.meilisearch.port} apiKey = {$plugin.tx_meilisearch.meilisearch.apiKey} } write { scheme = {$plugin.tx_meilisearch.meilisearch.scheme} host = {$plugin.tx_meilisearch.meilisearch.host} port = {$plugin.tx_meilisearch.meilisearch.port} apiKey = {$plugin.tx_meilisearch.meilisearch.apiKey} } } index { additionalFields { } // assigns processing instructions to Meilisearch fields during indexing, Meilisearch field = processing instruction fieldProcessingInstructions { changed = timestampToIsoDate created = timestampToIsoDate endtime = timestampToUtcIsoDate rootline = pageUidToHierarchy } queue { // mapping tableName.fields.MeilisearchFieldName => TableFieldName (+ cObj processing) pages = 1 pages { initialization = WapplerSystems\Meilisearch\IndexQueue\Initializer\Page // allowed page types (doktype) when indexing records from table "pages" allowedPageTypes = 1,4,7 indexingPriority = 0 indexer = WapplerSystems\Meilisearch\IndexQueue\PageIndexer indexer { // add options for the indexer here } // Only index standard pages and mount points that are not overlayed. additionalWhereClause = (doktype = 1 OR doktype=4 OR (doktype=7 AND mount_pid_ol=0)) AND no_search = 0 //exclude some html parts inside TYPO3SEARCH markers by classname (comma list) excludeContentByClass = typo3-search-exclude fields { sortSubTitle_stringS = subtitle } } } } search { // fields that are allowed to contain html and should be skipped during escaping after retrieval from Meilisearch // by default all fields except url get escaped, you might need to add other url fields here as well because of & // characters in the url. trustedFields = url targetPage = {$plugin.tx_meilisearch.search.targetPage} initializeWithEmptyQuery = 0 showResultsOfInitialEmptyQuery = 0 initializeWithQuery = showResultsOfInitialQuery = 0 keepExistingParametersForNewSearches = 0 ignoreGlobalQParameter = 0 query { allowEmptyQuery = 0 allowedSites = __meilisearch_current_site // qf parameter http://wiki.apache.org/meilisearch/DisMaxQParserPlugin#qf_.28Query_Fields.29 queryFields = content^40.0, title^5.0, keywords^2.0, tagsH1^5.0, tagsH2H3^3.0, tagsH4H5H6^2.0, tagsInline^1.0, description^4.0, abstract^1.0, subtitle^1.0, navtitle^1.0, author^1.0 // fl parameter http://wiki.apache.org/meilisearch/CommonQueryParameters#fl returnFields = *, score // see http://wiki.apache.org/meilisearch/DisMaxRequestHandler#mm_.28Minimum_.27Should.27_Match.29 minimumMatch = // see http://wiki.apache.org/meilisearch/DisMaxRequestHandler#bf_.28Boost_Functions.29 boostFunction = // see http://wiki.apache.org/meilisearch/DisMaxQParserPlugin#bq_.28Boost_Query.29 boostQuery = // see http://lucene.apache.org/meilisearch/guide/7_0/the-dismax-query-parser.html#the-tie-tie-breaker-parameter tieParameter = filter { } sortBy = // https://www.hathitrust.org/blogs/large-scale-search/slow-queries-and-common-words-part-2 // http://blog.thedigitalgroup.com/vijaym/understanding-phrasequery-and-slop-in-meilisearch/ // https://meilisearch.pl/en/2010/07/14/meilisearch-and-phrasequery-phrase-bonus-in-query-stage/ // see https://lucene.apache.org/meilisearch/guide/7_0/the-dismax-query-parser.html#TheDisMaxQueryParser-Thepf_PhraseFields_Parameter // EXT:Meilisearch configures Schemas from Meilisearch to use content field with boost of 2.0 per default. // By enabling of phrase search, Meilisearch will build a phrase queries for a list of defined fields(phrase.fields) and boost the documents containing the terms in defined proximity(phrase.slop). // phrase.querySlop phrase = 0 phrase { // Note: Those are field for implicit phrase searching. On explicit "phrase searching" Meilisearch uses queryFields("qf" parameter) fields = content^10.0, title^10.0, tagsH1^10.0, tagsH2H3^10.0, tagsH4H5H6^10.0, tagsInline^10.0, description^10.0, abstract^10.0, subtitle^10.0, navtitle^10.0 // The number of words between words in query phrase is the slop-value. // e.g. on query phrase "Hello World" // @ slop = 0 will math "Hello World" but not "Hello wonderful World" // @ slop = 1 will math "Hello World" and/or "Hello wonderful World" // Note: this value is for implicit phrase searching(without double quotes) slop = 0 // The concept of query slop is similar to phrase.slop but it applies to the explicit phrase queries from the user and to match documents instead of boosting. // Also if the user uses double quotes in the search term, then // the query slop value is used and // the result contains only the documents with those phrase. // see https://lucene.apache.org/meilisearch/guide/7_0/the-extended-dismax-query-parser.html http://lucene.472066.n3.nabble.com/Query-slop-vs-phrase-slop-td1637041.html // Note: this value is for explicit "phrase searching"(with double quotes) querySlop = 0 } // bigram phrase functionality is similar to the Ngram filters, difference is that // filters strip down the words to chars(char combinations) // bigraming phrases strip down the sentence to the two-word combinations(phrases) // e.g. "bigraming phrases strip down the sentence to phrases" generates following // "bigraming phrases" // "phrases strip" // "strip down" // "down the" // "the sentence" // "sentence to" // "to phrases" // Note: The triplets phrases will be stripped down to two two-word phrases bigramPhrase = 0 bigramPhrase { fields = content^10.0, title^10.0, tagsH1^10.0, tagsH2H3^10.0, tagsH4H5H6^10.0, tagsInline^10.0, description^10.0, abstract^10.0, subtitle^10.0, navtitle^10.0 slop = 0 } // Please see bigram phrases. Difference to bi is tri, which means building of triplets phrases. // e.g. "trigraming phrases strip down the sentence to triplets phrases" generates following triplets // "trigraming phrases strip" // "phrases strip down" // "strip down the" // "down the sentence" // "the sentence to" // "sentence to triplets" // "to triplets phrases" trigramPhrase = 0 trigramPhrase { fields = content^10.0, title^10.0, tagsH1^10.0, tagsH2H3^10.0, tagsH4H5H6^10.0, tagsInline^10.0, description^10.0, abstract^10.0, subtitle^10.0, navtitle^10.0 slop = 0 } } results { resultsHighlighting = 0 resultsHighlighting { highlightFields = content fragmentSize = 200 fragmentSeparator = [...] wrap = | } siteHighlighting = 0 resultsPerPage = {$plugin.tx_meilisearch.search.results.resultsPerPage} resultsPerPageSwitchOptions = 10, 25, 50 showDocumentScoreAnalysis = 0 } spellchecking = 0 spellchecking { wrap = |