我已将带有标题字段的文档编入索引,其值为:
title one; second hand; third bird
所以我的文件有3个标题:
应该找到以下示例查询的Twis文档:
但是当用户输入时无法找到:
正如我之前提到的,所有标题都存储在一个数据库字段中:
“头衔一;二手;第三只鸟”
我可以使用什么样的分析仪使其按照我的描述工作? 我编写了简单的SemicolonTokenizer扩展CharTokenizer - 但这还不够,因为数据库很大,我不能在查询中使用*
任何建议都将不胜感激。谢谢!
答案 0 :(得分:1)
一个简单的LetterTokenizer
或StandardTokenizer
应该可以(或者更多点StandardAnalyzer
或SimpleAnalyzer
)。
我对你的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”