我想匹配拼寫不同但具有相同發音的單詞。像「郵件」和「男性」,「飛機」和「平原」。我們可以在elasticsearch中做這樣的匹配嗎?匹配具有相同發音的詞語elasticsearch
3
A
回答
1
您可以使用拼音標記過濾器 以此目的。註音過濾器是一個插件,需要單獨安裝和設置。你可以利用這個blog詳細解釋如何設置和使用語音標記過濾器。
2
您可以使用analysis phonetic plugin來執行該任務。
讓我們創建一個索引使用自定義分析利用該插件:
curl -XPUT localhost:9200/phonetic -d '{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": [
"standard",
"lowercase",
"my_metaphone"
]
}
},
"filter": {
"my_metaphone": {
"type": "phonetic",
"encoder": "metaphone",
"replace": true
}
}
}
}
}'
現在,讓我們使用新的分析分析你的榜樣。正如你所看到的,plain
和plane
會產生單令牌PLN
:
curl -XGET 'localhost:9200/phonetic/_analyze?analyzer=my_analyzer&pretty' -d 'plane'
curl -XGET 'localhost:9200/phonetic/_analyze?analyzer=my_analyzer&pretty' -d 'plain'
{
"tokens" : [ {
"token" : "PLN",
"start_offset" : 0,
"end_offset" : 5,
"type" : "<ALPHANUM>",
"position" : 1
} ]
}
同樣的事情mail
和male
其產生單令牌ML
:
curl -XGET 'localhost:9200/phonetic/_analyze?analyzer=my_analyzer&pretty' -d 'mail'
curl -XGET 'localhost:9200/phonetic/_analyze?analyzer=my_analyzer&pretty' -d 'male'
{
"tokens" : [ {
"token" : "ML",
"start_offset" : 0,
"end_offset" : 4,
"type" : "<ALPHANUM>",
"position" : 1
} ]
}
我用metaphone
編碼器,但您可以自由使用任何其他支持的編碼器。你可以找到所有支持的編碼器的更多信息:在Apache Codec documentation爲metaphone
,double_metaphone
,soundex
,caverphone
,caverphone1
,caverphone2
,refined_soundex
,cologne
,beider_morse
- 的additional encoders爲
koelnerphonetik
,haasephonetik
和nysiis
0
不需要插件的解決方案是使用Synonym Token Filter。例如:
{
"filter" : {
"synonym" : {
"type" : "synonym",
"synonyms" : [
"mail, male",
"plane, plain"
]
}
}
}
你也可以把同義詞在一個文本文件,並說明,請參閱我掛一個例子的文檔。
相關問題
- 1. 匹配具有相同字母的單詞
- 2. ElasticSearch中的詞匹配
- 3. 音譯詞匹配
- 4. FOSElasticaBundle/elasticsearch部分詞匹配配置
- 5. ElasticSearch部分短語匹配
- 6. Elasticsearch |匹配多個短語
- 7. Preg匹配相同的單詞與相同的回報?
- 8. ElasticSearch篩選多個具有相同術語的多個文檔
- 9. grep找到一行中具有相同元音的詞
- 10. MySQL的詞匹配語句
- 11. Elasticsearch查詢匹配相同嵌套字段的不同值
- 12. elasticsearch匹配從文檔中的所有詞語的搜索查詢
- 13. 匹配2具有相同實例名稱的不同對象
- 14. 部分單詞匹配不elasticsearch
- 15. 匹配所有的列具有相同的價值
- 16. 匹配的相同
- 17. 避免匹配具有不同含義的流行詞的詞幹
- 18. Elasticsearch:找到與查詢具有相同順序的詞的文本
- 19. 匹配產生的球具有相同數量的
- 20. Elasticsearch詞組建議詞語拼音差異
- 21. Django i18n_patterns不匹配具有不同語言代碼的鏈接
- 22. jquery匹配具有相同id /類的多個元素
- 23. XSLT具有相同匹配的多個模板
- 24. jQuery:addClass元素具有相同或匹配的來源
- 25. 匹配具有相同值的多個列SQL
- 26. 在ODBC中匹配多個具有相同值的列
- 27. 匹配具有相同唯一值的數組VBA(Excel)
- 28. Bazel是否與CMake具有文件匹配相同的問題?
- 29. MySQL - 查找具有相同列但匹配特定ID的行
- 30. 如何匹配兩個語音文件並返回它們是否是相同的單詞?
這正是我一直在尋找的。我在哪裏可以獲得有關其他類型編碼器的更多信息? –
更多關於編碼器的信息[here](http://stackoverflow.com/a/35145238/4604579) – Val