【发布时间】:2011-07-13 21:18:28
【问题描述】:
我正在尝试在 Lucene.NET 上实现我的搜索,我的需求是:
- 直接搜索找到结果
- 如果没有结果,用不区分重音再次搜索
我是在 SQL Server 上完成的,但我想将其移至 Lucene.NET。我做了一个研究,首先我在 Lucene 中找到了 ISOLatinFilter,然后是 ASCIIFoldingFilter。但我找不到如何使用它的简单示例(即使在 Lucene in Action 书中)
你能给我一个小示例代码来实现不区分重音的搜索吗?我需要更改索引上的任何其他内容吗?由于我还需要区分重音,因此我不能只创建不区分重音的索引。
谢谢
【问题讨论】:
-
这可能会给你一些想法:stackoverflow.com/questions/3354948/…
-
我检查并尝试了它,但是当我使用 ASCIIFoldingFilter 时,它只使用不区分重音的版本索引我的值。 (即:göz 被索引为 goz)但我需要两个版本。 (即:当我搜索 göz 时,如果有直接的 göz 记录,它不应该返回 goz)有没有办法同时索引两者区分口音和不区分口音的版本?
-
您需要索引数据两次(在 2 个不同的字段中),以便一个字段有重音,而另一个没有。搜索时,首先查看带重音的字段,然后查看不带重音的字段。或者,您可以同时在两个字段中进行搜索,但对带有重音符号的字段赋予更高的权重。
标签: c# lucene ascii lucene.net