我有一個名爲summary
的字符串屬性,它的analyzer
設置爲trigrams
和search_analyzer
設置爲words
。在ElasticSearch中處理點
"filter": {
"words_splitter": {
"type": "word_delimiter",
"preserve_original": "true"
},
"english_words_filter": {
"type": "stop",
"stop_words": "_english_"
},
"trigrams_filter": {
"type": "ngram",
"min_gram": "2",
"max_gram": "20"
}
},
"analyzer": {
"words": {
"filter": [
"lowercase",
"words_splitter",
"english_words_filter"
],
"type": "custom",
"tokenizer": "whitespace"
},
"trigrams": {
"filter": [
"lowercase",
"words_splitter",
"trigrams_filter",
"english_words_filter"
],
"type": "custom",
"tokenizer": "whitespace"
}
}
我需要在給定的輸入像React and HTML
(或React, html
),其查詢字符串被匹配到包含在summary
的話React
,reactjs
,react.js
,html
,html5
文件。隨着他們擁有更多的匹配關鍵詞,他們擁有更高的分數(理想情況下,我希望文檔中的分數只有低於100%的單詞匹配率)。
事情是,我猜這一刻react.js
在react
和js
中都被拆分,因爲我得到的所有文檔也包含js
。另一方面,Reactjs
什麼都不返回。我也認爲需要words_splitter
才能忽略逗號。
文檔和搜索查詢都未預定義。沒有什麼我可以硬編碼。我正在研究搜索引擎。 –
我正在考慮的事情基本上是創建一個過濾器,爲像「react.js」這樣的單詞創建一個不包含點的同義詞。通過這種方式,兩種變體都被接受。不幸的是我在文檔中找不到任何這樣做的方法。 –