1

我们在.net 上使用 lucene,我们需要一种方法来实现“与排序规则无关”的搜索我不知道这是否是正确的术语,但我们需要的是如果我有一个名为 [Žuf] 的用户我想可以通过 etering [zuf] 找到他,如果用户名是 [zuf] 并且我输入 [Žuf],也可以在其他方向找到他这个,但我更喜欢更聪明的东西

有什么想法吗?

谢谢阿尔米尔

4

2 回答 2

2

Lucene for Java 包含一个过滤器来完成这项工作:ICUFoldingFilter (http://lucene.apache.org/core/3_6_1/api/all/org/apache/lucene/analysis/icu/ICUFoldingFilter.html),在 maven 包中lucene-icu(至少在 3.6.1 版本中)。我不知道 Lucene.net 是否存在这样的库,但是,由于它基于 ICU,您应该能够在 .NET 中重写代码。

ICUFoldingFilter 是什么:

将搜索词折叠应用于 Unicode 文本的 TokenFilter,应用来自 UTR#30 字符折叠的折叠。

此过滤器将报告中的以下折叠应用于 unicode 文本:

- Accent removal
- Case folding
- Canonical duplicates folding
- Dashes folding
- Diacritic removal (including stroke, hook, descender)
- Greek letterforms folding
- Han Radical folding
- Hebrew Alternates folding
- Jamo folding
- Letterforms folding
- Math symbol folding
- Multigraph Expansions: All
- Native digit folding
- No-break folding
- Overline folding
- Positional forms folding
- Small forms folding
- Space folding
- Spacing Accents folding
- Subscript folding
- Superscript folding
- Suzhou Numeral folding
- Symbol folding
- Underline folding
- Vertical forms folding
- Width folding

此外,删除了默认可忽略项,并将文本规范化为 NFKC。所有折叠、大小写折叠和归一化映射都是递归应用的,以确保完全折叠和归一化的结果。

于 2012-10-08T09:00:34.990 回答
1

看看ASCIIFoldingFilter,结合LowerCaseFilter它应该可以满足您的需求。

于 2011-09-14T18:14:08.143 回答