与重音无关的重音搜索

时间:2019-06-02 15:51:20

标签: caching search stackexchange.redis redisearch

是否可以通过redisearch进行不区分重音符号的搜索? 我需要与SqlServer Collat​​ions提供的功能相同。

例如索引Atsargųlikučiaipagalsandėlius中有一个字符串。应该通过查询字符串likučiai likuciai 找到它。

简单而肮脏的解决方案是存储文本的多个版本-真实和规范化,标准化所有查询,搜索标准化版本并返回真实版本作为结果。但是,对于数百万个文档,此解决方案将消耗大量内存。有没有一种干净的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

通过结合模式定义中的PHONETIC "dm:fr" option和模糊搜索,我可以找到您的文档。

  1. 使用FT.CREATE test_phonetic SCHEMA title TEXT PHONETIC "dm:fr"
  2. 创建新架构
FT.ADD test_phonetic doc_1 0.5 FIELDS title "Atsargų likučiai pagal sandėlius"
  1. 添加文档:
FT.SEARCH test_phonetic "@title:%likučiai%" NOCONTENT WITHSCORES
# returns doc_1 succesfully
FT.SEARCH test_phonetic "@title:%likuciai%" NOCONTENT WITHSCORES
# returns doc_1 succesfully too
  1. 使用模糊搜索进行搜索:
import io
df = pd.read_csv(io.StringIO("""Name,Team\nWill,DEN\nMark,SEA\nBob,MIA\nWill,DEN\nWill,DEN\nMark,SEA\nWill,DEN\nWill,DEN\nBob,MIA\nMark,SEA\n"""))
df

   Name Team
0  Will  DEN
1  Mark  SEA
2   Bob  MIA
3  Will  DEN
4  Will  DEN
5  Mark  SEA
6  Will  DEN
7  Will  DEN
8   Bob  MIA
9  Mark  SEA