如何解决Sphinx 搜索:在单个术语中处理多个 blend_chars 的错误?
我使用的是 Sphinx 2.2.11 并且相信我发现了一个关于 Sphinx 如何索引包含多个混合字符实例的术语的错误。
例如,我将连字符和句点设置为 blend_chars:
blend_chars = .,-
part1-part2.part3
我希望 Sphinx 会在每个 blend_char 的所有可能组合中索引该术语。例如:
- 变体 1:
part1-part2.part3
- 变体 2:
part1 part2.part3
- 变体 3:
part1-part2 part3
- 变体 4:
part1 part2 part3
然而,情况似乎并非如此。
如果我搜索:
part2.part3
我没有找到包含词条 part1-part2.part3
的记录。
但是,如果我搜索:
part2 part3
或
part1 part2 part3
我确实找到了记录。
这向我表明 Sphinx 不会索引 blend_chars 的所有可能组合。相反,它似乎只索引两个版本:
-
part1-part2.part3
(blend_chars 完好无损) -
part1 part2 part3
(忽略 blend_chars,视为空格)
如果为真,我会认为这是一个错误,因为它往往会破坏仅使用一个 blend_chars 的搜索。
谁能确认他们看到了相同的行为?任何人都可以提出有关如何修复或解决它的提示吗?
非常感谢!
解决方法
当您对 blend_chars = .,-
或 part2.part3
进行 part1-part2
和 search 时,Sphinx 会将它们作为单个标记保留,它不会将它们转换为 {{1} } 和 part2 AND part3
。
但是当您索引 part1 AND part2
时,它会生成 4 个标记:part1-part2.part3
、part1-part2.part3
、part1
和 part2
。这就是为什么用 part3
或 part1-part2
都找不到它们的原因。
解决方案是不要在查询中使用混合字符。如果您想使其自动化,您可以使用 part2.part3
来查看在搜索查询之前的索引期间如何对其进行标记化,然后使用结果来修改您的查询,例如:
CALL KEYWORDS
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。