在模式文件中添加MappingCharFilterFactory后是否有必要重新索引文档?

时间:2014-09-10 10:18:16

标签: search solr

我正在进行Solr搜索。我正在向Solr索引带有变音符号的文档。但问题是,如果我搜索没有变音符号的同一个单词,它就不会返回结果。

我在架构文件中进行了更改here

我在架构文件中添加的更改:

<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>

它给了我结果。

我有索引1000万个产品索引。 但我的问题是有必要重新索引所有文件。是否有任何解决方案无需重新索引所有文档?

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

简短的问责制是:是的,这是必要的。否则索引将不一致,因为您将拥有进行转换的文档以及尚未进行转换的文档。

更长的答案是:你可以(有点)解决问题,虽然查询会花费更多(因为你想尽可能多地将工作移到索引部分,这可能不是一个好主意) 。您必须添加一个过滤器,该过滤器会创建所有不同版本的字符,这些字符可能会为查询附加了变音符号,这可能会导致包含和不包含变音符号的大量术语。

根据术语的数量,现在可能足以为最重要的单词生成同义词单词列表。使用变音符号从数据库中获取所有项,在这些项上运行转换并从中创建同义词列表。使用它可以将查询扩展到具有和不具有变音符号的同一术语的其他版本。

这不是一个理想的情况,您应该更专注于更好地处理重建索引,因为这可能是您在升级,模式的其他更改等方面需要做的事情。