search - 更改Stemmer时是否应该在Elasticsearch中为文档重新编制索引?

标签 search indexing lucene elasticsearch stemming

我正在使用Elasticsearch为我的文档建立索引(尽管我相信我的问题也可以适用于任何其他搜索引擎,例如Lucene或Solr)。

我在索引时间使用Porter stemmer和停用词列表。我知道我应该使用相同的词干分析器,并在搜索时停止单词去除,以获得正确的结果。

我的问题是,如果我决定更改词干或在停用词列表中添加/删除几个单词,该怎么办? 是否应为所有文档(或所有文本字段)重新索引以应用更改?还是有其他方法可以处理这种情况?

最佳答案

是的,如果您需要大幅度更改分析仪,则必须重新编制文档索引。否则,更改只会影响查询分析。在更改StopFilter时,您也许可以避免这种情况,但在更改词干分析器时,则无法解决。重新索引是对索引数据应用新分析规则的唯一方法,无论是通过转储整个对象并从头开始对其进行重建还是通过更新文档来进行重新索引。

至于其他方法,如果您不希望重新编制索引,则只能将分析更改限制为查询时间,这会极大地限制您可以执行的操作(可以使SynonymFilter有效,但同样,对茎的更改肯定是出来)。

关于search - 更改Stemmer时是否应该在Elasticsearch中为文档重新编制索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26261492/

相关文章:

mysql - 按日期搜索 mysql

javascript - 如何在按键上提交表单?

elasticsearch - 如何为摄取附件 elasticsearch 插件禁用 base64 存储?

python - 当列名是时间戳时,如何使用字符串键选择数据框列?

java - Solr Filter Cache(FastLRUCache)占用内存过多导致内存不足?

macos - 使用终端查找文件夹内的文本

search - 谷歌搜索如何找到网站上的重要链接

Python:如何使用循环仅访问列表中的某些 boolean 元素?

java - 在构建针对多个实体运行的通用 Lucene 查询时如何排除或忽略字段

sql - 在 Lucene 或 SQL 中有更好的性能