我是Lucene的新手,我的项目是提供专业搜索
的小册子。我正在使用Lucene Java 3.1。

基本思想是帮助人们知道在哪里寻找信息(而不是
大号和干号)小册子,方法是查询索引以找出与查询相匹配的小册子和页码。我索引中的每个文档代表其中一本小册子中的特定页面。

到目前为止,我已经能够成功地从小册子中抓取原始文本,
将其插入索引中,并使用StandardAnalyzer对其进行查询就可以了
结束。

所以这是我的一般问题:
关于索引的许多查询都将涉及搜索在
小册子。有些地名使用符号变体。例如,在正文中
在一页上将其称为“ Ship Creek”,但在其他地方的地图图中,它可能被列为“ Ship Cr”。甚至“轮船”。我需要知道的是如何将两个连续的单词视为一个术语,并将符号变体添加为同义词。

我的目标当然是搜索任何变体并捕获所有出现的情况。如果我搜索(船和(Cr Ck Creek)),这并不能满足我的要求,因为在[ship]和[cr] / [ck] / [creek]之间可能会出现其他词语,从而导致误报。

因此,简而言之,我可能仍需要StandardAnalyzer提供的基本内容,但是具有特定的术语分组以发出地名作为完整术语,并可能插入同义词来覆盖变体。

例如,文本“ ...允许从上游的Ship Creek到...”
产生令牌[allowed],[mouth],[ship Creek],[upstream]。也许通过TokenFilter
这样,[ship creek]术语将扩展为[ship creek] [ship ck] [ship cr]。

作为奖励,最好处理棘手的文本“ ..,但不包括Ship,Bird和
坎贝尔克里克(Campbell Creek)的极限是...”,如[例外],[船舶克里克],[鸟类克里克],
[坎贝尔河],[哪里],[极限]。

这似乎是一个非常基本的用例,但对我而言尚不清楚如何才能使用Lucene contrib或SOLR的现有组件来完成此任务。是否应该在某种TokenFilter中进行检测和合并?我是否需要自定义分析器实施?

某些术语“分组”可能可以通过启发式方式完成[],[creek]为[creek]
但如果有帮助的话,我还会在文本中列出详尽的地点清单。

感谢您的任何帮助,您可以提供。

最佳答案

您可以使用Solr的Synonym Filter.只需设置“ creek”即可使用同义词“ ck”,“ cr”等。

我不知道有任何现有功能可以解决您的“奖金”问题。

07-25 20:37