Lucene.Net支持短语?:在索引期间,字段中用逗号分隔数据(原子地)标记化的最佳方法是什么?

时间:2010-03-15 12:48:08

标签: lucene lucene.net

我有一个数据库,其中包含我希望索引的列,其中包含以逗号分隔的名称,例如,

User.FullNameList = "Helen Ready, Phil Collins, Brad Paisley"

我更喜欢将每个名称​​原子地(名称作为整个可搜索实体)标记。对此最好的方法是什么?

  1. 我是否错过了一个简单的选项 tokenize delimiter?
  2. 我有 继承或编写我自己的类 滚动我自己的标记器?
  3. 别的什么? ;)
  4. Lucene.net不支持短语吗?

    或者它是否足够智能自动处理这个用例?

    我确信我不是第一个必须这样做的人。谷歌搜索没有产生明显的解决方案。

    ***编辑:使用我的示例,我想将这些名称短语存储在一个字段中:

    Helen Ready

    菲尔柯林斯

    Brad Paisley

    不是这些单词:

    海伦

    就绪

    菲尔

    柯林斯

    布拉德

    佩斯利

2 个答案:

答案 0 :(得分:1)

编辑: 在阅读了您的澄清之后,希望这是一个更相关的答案:

  1. 您没有错过修改分隔符的选项。
  2. 您需要滚动自己的标记生成器。我建议你继承CharTokenizer。你需要根据你的规范定义isTokenChar(),这意味着除了逗号之外的任何东西都是一个标记字符。

答案 1 :(得分:0)

您可以自己用逗号分隔字符串,然后使用 -

  • 使用关键字分析器(非标记化)
  • 索引每个名称
  • 使用标准分析器对每个名称进行索引,并将您的搜索包装在引号中。确保在每个名称之间索引一个虚拟术语,以便“Ready Phil”与文档
  • 不匹配