[英]Lucene Analyzer to Use With Special Characters and Punctuation?
我有一个Lucene索引,其中包含多个文档。 每个文档都有多个字段,例如:
Id
Project
Name
Description
Id字段将是唯一的标识符,例如GUID,Project是用户的ProjectID,并且用户只能查看其项目的文档,并且Name和Description包含可以包含特殊字符的文本。
当用户在“名称”字段上执行搜索时,我希望能够尝试匹配我所能做到的最佳匹配,例如:
First
都将返回:
First.Last
和
First.Middle.Last
名称也可以是这样的:
Test (NameTest)
如果用户在其中键入“测试”,“名称”或“(NameTest)”,则他们可以找到结果。
但是,如果我说Project是'ProjectA',则需要完全匹配(不区分大小写的搜索)。 Id字段也是如此。
我应将哪些字段设置为Tokenized,将哪些字段设置为Untokenized? 另外,我是否应该考虑有一个好的分析仪来实现这一目标?
我一直在努力决定实现所需搜索的最佳途径。
出于简单原因,您的ID字段应该未标记,除非您编写自己的标记程序,否则它似乎无法标记(基于空格)。 您可以标记所有其他字段。
对项目名称执行短语查询,查找PhraseQuery或将项目名称括在双引号中(这将使其完全匹配)。 示例:“ \\“我的幻想项目” \\“
对于名称字段,一个简单的查询应该可以正常工作。
不确定是否需要组合字段。 在这种情况下,请查询BooleanQuery(可让您以布尔方式组合不同的查询)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.