Lucene.Net支持词组?:什么是索引中来标记逗号分隔的数据(原子)的领域最好的方法?(Luce

2019-10-20 09:16发布

我有索引我想一个列有逗号分隔的名字,如数据库,

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

我宁愿来标记每名原子 (名称作为一个整体搜索的实体)。 什么是我们的最佳方法呢?

  1. 我错过了一个简单的选项来设置记号化分隔符?
  2. 我一定要继承或写我自己的类,它推出自己的分词?
  3. 别的东西? ;)

抑或Lucene.net不支持词组?

或者是足够聪明的自动处理这种使用情况?

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

***编辑:用我的例子,我想存储在一个单一的领域,这些名称短语:

海伦就绪

菲尔柯林斯

比斯利

不是这些个人的话:

海伦

准备

菲尔

柯林斯

布拉德

佩斯利

Answer 1:

编辑:看了你的澄清,这里是希望更相关的答案:

  1. 你没有错过一个选项来修改分隔符。
  2. 你需要推出自己的分词器。 我建议你继承CharTokenizer 。 您需要定义isTokenChar()根据您的规范,这意味着什么,但一个逗号是一个令牌字符。


Answer 2:

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

  • 索引每个名称使用关键字分析仪(非标记化)
  • 或者使用标准分析器指数每个名称,并用引号括搜索。 确保指数的伪项在每个名称之间,因此“准备菲尔”不与文档匹配


文章来源: Lucene.Net support phrases?: What is best approach to tokenize comma-delimited data (atomically) in fields during indexing?