0

这是通过 NHibernate.Search 命名空间使用 Lucene 的问题,该命名空间与 Lucene 结合使用。

我正在索引索引中的标题实习医生格蕾

Title : "Grey's Anatomy"

通过使用 Luke,我看到该标题正在被标记为:

Title: anatomy
Title: grey

现在,如果我搜索以下内容,我会得到一个结果:

"grey" or "grey's"

但是,如果我搜索“灰色”,那么我什么也得不到。

我希望“灰色”返回结果。我想这可能是任何带有撇号的单词的问题。

所以,这里有一些问题:

  1. 我是否认为我可以通过在索引时更改某些内容(因此,更改 tolkenizer ..??)或将其更改为查询时间(查询解析器?)来解决此问题
  2. 如果有解决方案,有人可以提供一个小代码示例吗?

谢谢

4

1 回答 1

1

如果您使用 Lucene 进行经典的 Term 搜索,那么它很可能不会显示在结果中,除非您在保存时进行了很好的标记化工作,所以从我看到的地方,您有 2 个选择或第 3 个组合其中:

  1. 使用 Stemmer 进行索引数据和查询。词干分析器很快,你总能在 Google 的某个地方找到 Porter 词干分析器的实现。问题是当您寻找不同的语言时。
  2. 使用模糊查询。使用模糊查询,您可以设置要“远离”正在搜索的单词的编辑距离。问题是,因为使用编辑距离(即 Lehvenstein)的 2 个单词是“接近”的,并不意味着它们是相同的,但是应该通过将编辑距离设置为 2 来解决 Gray 和 Grey's 和 Grays 的问题.

我认为您将能够找到一个不错的 Porter Stemmer 实现,这很好

希望我能帮上忙!

于 2011-03-11T07:57:26.350 回答