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

Lucene.Net支持短语:在索引期间,在字段中标记逗号分隔数据(原子)的最佳方法是什么?,lucene,lucene.net,Lucene,Lucene.net,我有一个数据库,其中有一列我希望索引,该列的名称以逗号分隔,例如 User.FullNameList = "Helen Ready, Phil Collins, Brad Paisley" 我更喜欢原子化每个名称(名称作为一个整体可搜索实体)。最好的方法是什么 我是否错过了一个简单的设置选项 标记化分隔符 我有吗 创建子类或编写自己的类 那是我自己的代币器吗 还有别的吗?;) 或者Lucene.net不支持短语 或者它是否足够聪明,能够自动处理这个用例 我肯定我不是第一个这样做的人。谷歌没有产

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

User.FullNameList = "Helen Ready, Phil Collins, Brad Paisley"
我更喜欢原子化每个名称(名称作为一个整体可搜索实体)。最好的方法是什么

  • 我是否错过了一个简单的设置选项 标记化分隔符
  • 我有吗 创建子类或编写自己的类 那是我自己的代币器吗
  • 还有别的吗?;) 或者Lucene.net不支持短语

    或者它是否足够聪明,能够自动处理这个用例

    我肯定我不是第一个这样做的人。谷歌没有产生明显的解决方案

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

    海伦准备好了吗

    菲尔·柯林斯

    布拉德·佩斯利

    不是这些单独的词:

    海伦

    准备好了吗

    菲尔

    柯林斯

    布拉德

    佩斯利编辑: 在阅读了您的澄清后,希望这里有一个更相关的答案:

  • 您没有错过修改分隔符字符的选项
  • 您确实需要使用自己的标记器。我建议你用亚类。您需要根据您的规范定义isTokenChar(),这意味着除了逗号以外的任何字符都是标记字符
  • 编辑: 在阅读了您的澄清后,希望这里有一个更相关的答案:

  • 您没有错过修改分隔符字符的选项
  • 您确实需要使用自己的标记器。我建议你用亚类。您需要根据您的规范定义isTokenChar(),这意味着除了逗号以外的任何字符都是标记字符

  • 您可以自己用逗号分割字符串,并且——

    • 使用关键字分析器为每个名称编制索引(非标记化)
    • 或者使用标准分析器为每个名称编制索引,并将搜索结果用引号括起来。确保在每个名称之间索引一个虚拟术语,以便“Ready Phil”与文档不匹配

    您可以自己用逗号分割字符串,并且--

    • 使用关键字分析器为每个名称编制索引(非标记化)
    • 或者使用标准分析器为每个名称编制索引,并将搜索结果用引号括起来。确保在每个名称之间索引一个虚拟术语,以便“Ready Phil”与文档不匹配

    Yuval,我想索引三个全名,而不是单个字段中的六个单词。我澄清了我的问题和上面的例子。皮特,请看我答案的新版本。尤瓦尔,我想在一个字段中索引三个全名,而不是六个单独的单词。我澄清了我的问题和上面的例子。皮特,请看我答案的新版本。嗨,皮特-你用这个解决方案有进展吗?嗨,皮特-你用这个解决方案有进展吗?