430 lines
12 KiB
Plaintext
430 lines
12 KiB
Plaintext
|
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}
|
||
|
path = {$plugin.tx_meilisearch.meilisearch.path}
|
||
|
username = {$plugin.tx_meilisearch.meilisearch.username}
|
||
|
password = {$plugin.tx_meilisearch.meilisearch.password}
|
||
|
}
|
||
|
write {
|
||
|
scheme = {$plugin.tx_meilisearch.meilisearch.scheme}
|
||
|
host = {$plugin.tx_meilisearch.meilisearch.host}
|
||
|
port = {$plugin.tx_meilisearch.meilisearch.port}
|
||
|
path = {$plugin.tx_meilisearch.meilisearch.path}
|
||
|
username = {$plugin.tx_meilisearch.meilisearch.username}
|
||
|
password = {$plugin.tx_meilisearch.meilisearch.password}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
index {
|
||
|
additionalFields {
|
||
|
|
||
|
}
|
||
|
|
||
|
// assigns processing instructions to Solr fields during indexing, Solr field = processing instruction
|
||
|
fieldProcessingInstructions {
|
||
|
changed = timestampToIsoDate
|
||
|
created = timestampToIsoDate
|
||
|
endtime = timestampToUtcIsoDate
|
||
|
rootline = pageUidToHierarchy
|
||
|
}
|
||
|
|
||
|
queue {
|
||
|
|
||
|
// mapping tableName.fields.SolrFieldName => 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 Solr
|
||
|
// 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 = __solr_current_site
|
||
|
|
||
|
// qf parameter http://wiki.apache.org/solr/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/solr/CommonQueryParameters#fl
|
||
|
returnFields = *, score
|
||
|
|
||
|
// see http://wiki.apache.org/solr/DisMaxRequestHandler#mm_.28Minimum_.27Should.27_Match.29
|
||
|
minimumMatch =
|
||
|
|
||
|
// see http://wiki.apache.org/solr/DisMaxRequestHandler#bf_.28Boost_Functions.29
|
||
|
boostFunction =
|
||
|
|
||
|
// see http://wiki.apache.org/solr/DisMaxQParserPlugin#bq_.28Boost_Query.29
|
||
|
boostQuery =
|
||
|
|
||
|
// see http://lucene.apache.org/solr/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-solr/
|
||
|
// https://solr.pl/en/2010/07/14/solr-and-phrasequery-phrase-bonus-in-query-stage/
|
||
|
|
||
|
// see https://lucene.apache.org/solr/guide/7_0/the-dismax-query-parser.html#TheDisMaxQueryParser-Thepf_PhraseFields_Parameter
|
||
|
// EXT:Solr configures Schemas from Apache Solr to use content field with boost of 2.0 per default.
|
||
|
// By enabling of phrase search, Apache Solr 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" Apache Solr 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/solr/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 = <span class="results-highlight">|</span>
|
||
|
}
|
||
|
siteHighlighting = 0
|
||
|
|
||
|
resultsPerPage = {$plugin.tx_meilisearch.search.results.resultsPerPage}
|
||
|
resultsPerPageSwitchOptions = 10, 25, 50
|
||
|
|
||
|
showDocumentScoreAnalysis = 0
|
||
|
}
|
||
|
|
||
|
spellchecking = 0
|
||
|
spellchecking {
|
||
|
wrap = |<div class="spelling-suggestions">###LLL:didYouMean### |</div>|
|
||
|
searchUsingSpellCheckerSuggestion = 0
|
||
|
numberOfSuggestionsToTry = 1
|
||
|
}
|
||
|
|
||
|
lastSearches = 0
|
||
|
lastSearches {
|
||
|
limit = 10
|
||
|
// tracking mode "user" or "global"
|
||
|
mode = user
|
||
|
}
|
||
|
|
||
|
frequentSearches = 0
|
||
|
frequentSearches {
|
||
|
useLowercaseKeywords = 0
|
||
|
|
||
|
minSize = 14
|
||
|
maxSize = 32
|
||
|
limit = 20
|
||
|
|
||
|
select {
|
||
|
SELECT = keywords as search_term, count(*) as hits
|
||
|
FROM = tx_meilisearch_statistics
|
||
|
ADD_WHERE = AND num_found != 0
|
||
|
GROUP_BY = keywords
|
||
|
ORDER_BY = hits DESC, search_term ASC
|
||
|
checkRootPageId = 1
|
||
|
checkLanguage = 1
|
||
|
}
|
||
|
|
||
|
// cache lifetime in seconds (default is 86400s = 24h)
|
||
|
cacheLifetime = 86400
|
||
|
}
|
||
|
|
||
|
sorting = 0
|
||
|
sorting {
|
||
|
defaultOrder = asc
|
||
|
|
||
|
options {
|
||
|
relevance {
|
||
|
field = relevance
|
||
|
label = Relevance
|
||
|
}
|
||
|
|
||
|
title {
|
||
|
field = sortTitle
|
||
|
label = Title
|
||
|
}
|
||
|
|
||
|
type {
|
||
|
field = type
|
||
|
label = Type
|
||
|
}
|
||
|
|
||
|
author {
|
||
|
field = sortAuthor
|
||
|
label = Author
|
||
|
}
|
||
|
|
||
|
created {
|
||
|
field = created
|
||
|
label = Creation Date
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
faceting = 0
|
||
|
faceting {
|
||
|
minimumCount = 1
|
||
|
sortBy = count
|
||
|
limit = 10
|
||
|
showEmptyFacets = 0
|
||
|
keepAllFacetsOnSelection = 0
|
||
|
|
||
|
facetLinkUrlParameters =
|
||
|
|
||
|
facets {
|
||
|
type {
|
||
|
label = Content Type
|
||
|
field = type
|
||
|
}
|
||
|
}
|
||
|
|
||
|
showAllLink.wrap = <li>|</li>
|
||
|
}
|
||
|
|
||
|
elevation = 0
|
||
|
elevation {
|
||
|
markElevatedResults = 1
|
||
|
forceElevation = 1
|
||
|
}
|
||
|
|
||
|
variants = 0
|
||
|
variants {
|
||
|
expand = 1
|
||
|
// variantField needs to be a string or a numeric field
|
||
|
variantField = variantId
|
||
|
limit = 10
|
||
|
}
|
||
|
}
|
||
|
|
||
|
suggest = 0
|
||
|
suggest {
|
||
|
numberOfSuggestions = 10
|
||
|
suggestField = spell
|
||
|
forceHttps = 0
|
||
|
showTopResults = 1
|
||
|
numberOfTopResults = 5
|
||
|
}
|
||
|
|
||
|
statistics = 0
|
||
|
statistics {
|
||
|
anonymizeIP = 1
|
||
|
}
|
||
|
|
||
|
view {
|
||
|
pluginNamespace = tx_meilisearch
|
||
|
|
||
|
templateRootPaths {
|
||
|
0 = EXT:meilisearch/Resources/Private/Templates/
|
||
|
10 = {$plugin.tx_meilisearch.view.templateRootPath}
|
||
|
}
|
||
|
partialRootPaths {
|
||
|
0 = EXT:meilisearch/Resources/Private/Partials/
|
||
|
10 = {$plugin.tx_meilisearch.view.partialRootPath}
|
||
|
}
|
||
|
layoutRootPaths {
|
||
|
0 = EXT:meilisearch/Resources/Private/Layouts/
|
||
|
10 = {$plugin.tx_meilisearch.view.layoutRootPath}
|
||
|
}
|
||
|
|
||
|
// By convention the templates is loaded from EXT:meilisearch/Resources/Private/Templates/Frontend/Search/(ActionName).html
|
||
|
// If you want to define a different entry template, you can do this here to overwrite the conventional default template
|
||
|
// if you want to use FLUID fallbacks you can just configure the template name, otherwise you could also use a full reference EXT:/.../
|
||
|
// The templates that you configure in availableTemplate can be used in the flexform by the editor to select a template for the concrete plugin instance.
|
||
|
templateFiles {
|
||
|
// results = Results
|
||
|
// results.availableTemplates {
|
||
|
// default {
|
||
|
// label = Default Searchresults Template
|
||
|
// file = Results
|
||
|
// }
|
||
|
// }
|
||
|
// form = Form
|
||
|
// form.availableTemplates {
|
||
|
// default {
|
||
|
// label = Default Searchform Template
|
||
|
// file = Form
|
||
|
// }
|
||
|
// }
|
||
|
// frequentSearched = FrequentlySearched
|
||
|
}
|
||
|
}
|
||
|
|
||
|
logging {
|
||
|
exceptions = 1
|
||
|
debugOutput = 0
|
||
|
|
||
|
indexing {
|
||
|
indexQueueInitialization = 0
|
||
|
missingTypo3SearchMarkers = 1
|
||
|
pageIndexed = 0
|
||
|
|
||
|
queue {
|
||
|
pages = 0
|
||
|
}
|
||
|
}
|
||
|
|
||
|
query {
|
||
|
filters = 0
|
||
|
searchWords = 0
|
||
|
queryString = 0
|
||
|
rawPost = 0
|
||
|
rawGet = 0
|
||
|
rawDelete = 0
|
||
|
}
|
||
|
}
|
||
|
|
||
|
features {
|
||
|
requireCHashArgumentForActionArguments = 0
|
||
|
useRawDocuments = 1
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# Provide typoscript libraries
|
||
|
lib.solr_extbase_bootstrap = USER
|
||
|
lib.solr_extbase_bootstrap {
|
||
|
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
|
||
|
vendorName = ApacheSolrForTypo3
|
||
|
extensionName = Solr
|
||
|
settings < plugin.tx_meilisearch.settings
|
||
|
persistence < plugin.tx_meilisearch.persistence
|
||
|
view < plugin.tx_meilisearch.view
|
||
|
}
|
||
|
|
||
|
plugin.tx_meilisearch_PiResults_Results < lib.solr_extbase_bootstrap
|
||
|
plugin.tx_meilisearch_PiResults_Results = USER_INT
|
||
|
plugin.tx_meilisearch_PiResults_Results {
|
||
|
pluginName = pi_results
|
||
|
switchableControllerActions {
|
||
|
Search {
|
||
|
1 = results
|
||
|
2 = form
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
plugin.tx_meilisearch_PiSearch_Search < lib.solr_extbase_bootstrap
|
||
|
plugin.tx_meilisearch_PiSearch_Search {
|
||
|
pluginName = pi_search
|
||
|
switchableControllerActions {
|
||
|
Search {
|
||
|
1 = form
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
plugin.tx_meilisearch_PiFrequentSearches_FrequentSearches < lib.solr_extbase_bootstrap
|
||
|
plugin.tx_meilisearch_PiFrequentSearches_FrequentSearches {
|
||
|
pluginName = pi_frequentlySearched
|
||
|
switchableControllerActions {
|
||
|
Search {
|
||
|
1 = frequentlySearched
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|