在Lucene索引中存储带撇号的单词

在Lucene索引中存储带撇号的单词,lucene,lucene.net,Lucene,Lucene.net,我在Lucene索引中有一个公司字段。 其中一个被索引的公司名称是:穆迪 当用户键入以下任何关键字时,我希望这家公司出现在搜索结果中。 1.穆奥 2.情绪 3.穆迪 4.穆迪 我应该如何在Lucene中存储这个索引,以及我应该使用什么类型的Lucene查询来获得这种行为 谢谢。标准分析仪应适用于3和4,但不适用于1和2 如果不编写自己的(复杂的)文本分析器,我会考虑您希望如何搜索公司名称。例如,基本的lucene搜索语法意味着,如果使用通配符“Moo*”和“Mood*”进行搜索,就可以找到“Mo

我在Lucene索引中有一个公司字段。 其中一个被索引的公司名称是:穆迪

当用户键入以下任何关键字时,我希望这家公司出现在搜索结果中。 1.穆奥 2.情绪 3.穆迪 4.穆迪

我应该如何在Lucene中存储这个索引,以及我应该使用什么类型的Lucene查询来获得这种行为


谢谢。

标准分析仪应适用于3和4,但不适用于1和2


如果不编写自己的(复杂的)文本分析器,我会考虑您希望如何搜索公司名称。例如,基本的lucene搜索语法意味着,如果使用通配符“Moo*”和“Mood*”进行搜索,就可以找到“Moody”。因此,您可能想考虑在向Lucene提交之前向搜索项附加一个“*”,但是如果用户不知道引擎盖下的通配符添加,这可能会引起一些混淆。

< P>根据您的澄清,我想把您的问题分成两个,然后依次回答:

  • 我如何将带撇号的单词索引为与不带撇号的类似单词相同的单词?e、 g.将穆迪和穆迪映射到同一指数项
  • 我如何在Lucene中实现自动完成搜索-即给定索引,使用单词前缀查找文档,例如将Moo映射到Moodys 1相对容易-使用a创建一个标记,将撇号和s与前面的单词组合在一起,然后使用a删除撇号和s。这将使穆迪转变为穆迪。A可以做到这一点,甚至更多(小写和停止删除单词),这可能超出您的需要。使用词干分析器应该使穆迪和穆迪达到同样的目的。试试这个


    2更难:艾伦提到的Lucene的,只有当公司名称是一个领域中的第一个词时才起作用。你需要一些类似的答案

    答案取决于您希望构建其余索引的方式:1。应该代表多元化吗?i、 e.“苹果”和“苹果”有区别吗?2.你想保留撇号,还是可以删除?3.公司名称是孤立的还是在一个较大的字段中?谢谢你的评论…我的回答1.否2.我希望Lucene不要保留撇号3.公司名称可能在较大的字段中也是孤立的