如何在Zend_Lucene中处理数字作为单词和数字(“一”与“1”)

时间:2011-06-20 11:21:44

标签: php search lucene alias

我有新闻文章内容,它是使用Lucene的索引,并在PHP中使用Zend_Lucene进行查询。

内容经常引用英国电视频道(例如BBC One),但我知道我们的用户通常会输入搜索字词“BBC 1”或“BBC1”而不是“BBC One”。

是否有任何“标准”方法来处理这些数字 - 作为单词与数字作为数字搜索问题?

我的选择似乎是每当我看到数字时修改搜索词,例如,我将搜索词“BBC1”更改为“BBC 1 One”(或类似的东西) - 或者我修改索引内容这样数字就会转换为单词,反之亦然,两个版本都存储在索引中。

1 个答案:

答案 0 :(得分:0)

请参阅此lucene FAQ条目,它建议使用令牌过滤器来提供单词的别名/别名:

<强> 26. How can I make 'pig' also match 'hog' ?

  

据我所知,Lucene不提供支持术语别名的tokenzier,但你应该能够自己编写一个。您只需要编写一个接受单词对映射的TokenFilter,并使用它将第一个单词映射到第二个单词。

     

同样,请确保在索引和搜索期间使用相同的分析器,并且不要忘记将代码提交到Lucene项目,以便其他人也可以使用它;-)

这些旧信息可能现在更加舒适,但可能值得指导。