lucene分析仪,用于在一个字段中显示多个值

时间:2013-05-03 22:12:25

标签: lucene

我已将带有标题字段的文档编入索引,其值为:

title one; second hand; third bird

所以我的文件有3个标题:

  • 标题一
  • 二手
  • 第三只鸟

应该找到以下示例查询的Twis文档:

  • 标题一
  • 第三

但是当用户输入时无法找到:

  • title bird
  • 第二个
  • 第三个标题

正如我之前提到的,所有标题都存储在一个数据库字段中:

  

“头衔一;二手;第三只鸟”

我可以使用什么样的分析仪使其按照我的描述工作? 我编写了简单的SemicolonTokenizer扩展CharTokenizer - 但这还不够,因为数据库很大,我不能在查询中使用*

任何建议都将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

一个简单的LetterTokenizerStandardTokenizer应该可以(或者更多点StandardAnalyzerSimpleAnalyzer)。

我对你的Semicolon Tokenizer一无所知,所以不知道这是否会给你造成问题,但根据你对DO工作的搜索说法,情况可能并非如此。

是从用户传递的查询是引用还是作为PhraseQuery传入?如果是这样,那可能是您问题的根源。引用的查询,如:

content:"title hand"

对订单敏感,因此在您的示例中找不到。但是,您可以找到:

content:title content:hand

或者

content:(title hand)

而且,有关Lucene Query Parser Synax的更多内容。

答案 1 :(得分:0)

重点是我当前的搜索适用于:

content:(title hand)

它不应该返回结果,因为标题是:“标题一”和“二手”。没有标题“title hand”