0

我已经索引了具有标题字段的文档,其值如下:

title one; second hand; third bird

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

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

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

  • 标题一
  • 第三

但是当用户键入时找不到它:

  • 标题鸟
  • 第二个
  • 第三个标题

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

“第一名;第二手;第三只鸟”

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

任何意见,将不胜感激。谢谢!

4

2 回答 2

1

一个简单的LetterTokenizerorStandardTokenizer应该做的很好(或者更重要的是StandardAnalyzeror SimpleAnalyzer)。

我对您的分号标记器一无所知,所以不知道这是否会给您带来问题,但根据您对确实有效的搜索的说法,情况可能并非如此。

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

content:"title hand"

将对订单敏感,因此不会在您的示例中找到。但是,您将能够找到:

content:title content:hand

或者

content:(title hand)

并且,有关Lucene 查询解析器 Synax的更多信息。

于 2013-05-03T23:06:31.770 回答
0

关键是我目前的搜索适用于:

content:(title hand)

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

于 2013-05-04T12:13:19.473 回答