我有新闻文章内容,它是使用Lucene的索引,并在PHP中使用Zend_Lucene进行查询。
内容经常引用英国电视频道(例如BBC One),但我知道我们的用户通常会输入搜索字词“BBC 1”或“BBC1”而不是“BBC One”。
是否有任何“标准”方法来处理这些数字 - 作为单词与数字作为数字搜索问题?
我的选择似乎是每当我看到数字时修改搜索词,例如,我将搜索词“BBC1”更改为“BBC 1 One”(或类似的东西) - 或者我修改索引内容这样数字就会转换为单词,反之亦然,两个版本都存储在索引中。
答案 0 :(得分:0)
请参阅此lucene FAQ条目,它建议使用令牌过滤器来提供单词的别名/别名:
<强> 26. How can I make 'pig' also match 'hog' ? 强>:
据我所知,Lucene不提供支持术语别名的tokenzier,但你应该能够自己编写一个。您只需要编写一个接受单词对映射的TokenFilter,并使用它将第一个单词映射到第二个单词。
同样,请确保在索引和搜索期间使用相同的分析器,并且不要忘记将代码提交到Lucene项目,以便其他人也可以使用它;-)
这些旧信息可能现在更加舒适,但可能值得指导。