elasticsearch - 我应该如何索引和搜索英文连字符?

标签 elasticsearch search solr lucene

我正在使用Elasticsearch在相当广泛的文档中进行搜索,但是在寻找处理带连字符的单词的最佳方法时遇到了麻烦。

在我的数据中,单词经常以连字符或复合词的形式出现,例如pre-eclampsiapreeclampsia。目前,搜索一个不会找到另一个(standard标记化程序将连字符的版本索引为pre eclampsia)。

通过去除字符过滤器中的连字符,可以轻松解决此特定情况。但是我经常想对连字符进行标记化:搜索jean claudehappy go lucky应该匹配jean-claudehappy-go-lucky

解决此问题的一种方法是在应用程序层中,方法是将对hyphenated-word的任何查询实质上转换为hyphenated-word OR hyphenatedword。但是有什么方法可以处理搜索引擎中的所有这些用例,例如一些分析仪配置? (假设我的数据很大且变化很大,以至于我无法手动创建详尽的同义词文件。)

最佳答案

您可以使用compound word token filter-hyphenation_decompounder应该足够不错。

看来您的索引包含许多 Realm 特定的单词,而这些单词不一定在常规的英语词典中,所以我会花一些时间首先用对您的 Realm 很重要的单词来创建自己的词典。这可以基于特定 Realm 的文献,分类法等。dictionary_decompounder适合执行此类操作。

假设您的问题与Elasticsearch无关,而与Solr无关,后者的过滤器名为DictionaryCompoundWordTokenFilter

关于elasticsearch - 我应该如何索引和搜索英文连字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50296816/

相关文章:

string - Elasticsearch.NET搜索记录以字符串字段(NEST)中的值开头

Elasticsearch:过滤热门点击聚合

elasticsearch - 在ElasticSearch中删除数据

search - ElasticSearch:-ve在索引时间增强文档

mysql - lucene/solr vs mySQL 5.6 LIKE(包含)搜索——迁移到 solr 会提高速度吗?

java - 如何对排序数组使用二分搜索来查找特定范围内的整数个数。 (重复)

c - 在位数组中查找字节的高效算法

React-native 搜索栏和 flatList 问题

elasticsearch - Solr中的方面postfiletring(从ElasticSearch聚合后过滤转换)

django - Apache Solr搜索一词的一部分