没有繁重的数据库怎么做模糊字符串搜索?

Tob*_*ias 6 python database full-text-search fuzzy-search

我有目录号到产品名的映射:

35  cozy comforter
35  warm blanket
67  pillow
Run Code Online (Sandbox Code Playgroud)

并且需要一个能够找到拼写错误的混合名称的搜索,例如"warm cmfrter".

我们使用edit-distance(difflib)编写代码,但它可能无法扩展到18000个名称.

我实现了与Lucene类似的东西,但由于PyLucene只包装了Java,这会使部署复杂化到最终用户.

SQLite通常没有编译的全文或评分.

Xapian的绑定就像是C++,并且有一定的学习曲线.

尚未详细记录,但包括滥用的拼写检查.

那里还有什么?

Aar*_*ers 2

Nuular 具有全文搜索功能,但它不支持开箱即用的拼写错误匹配。您可以尝试向每个条目添加一个附加字段,该字段对 术语的SOUNDEX翻译进行索引,然后使用用户输入的 soundex 翻译进行搜索。我真的不知道这会有多好......

看看advashttp://advas.sourceforge.net/news.php其中有一个很好的演示,比较了各种类似 soundex 的方法:

advas/examples Aaron$ python phonetic_algorithms.py 
                    soundex       metaphone           nyiis      caverphone 
====================================================================================================
 schmidt :             S253           sxmtt          sssnad      SKMT111111
  schmid :             S253            sxmt          sssnad      SKMT111111
 schmitt :             S253            sxmt         sssnatt      SKMT111111
   smith :             S530            sm0h           snatt      SMT1111111
  smythe :             S530           smy0h           snatt      SMT1111111
 schmied :             S253            sxmt         sssnaad      SKMT111111
   mayer :             M600             myr           naaar      MA11111111
   meier :             M600              mr           naaar      MA11111111
....
Run Code Online (Sandbox Code Playgroud)

我不知道其中任何一个是否适合您的无名语言......