感谢阅读:)
我正在尝试使用Lucene在RTF文档中搜索“UTTD_Equip_City_TE”等字词。这个词以两种不同的形式出现:
我首先尝试使用StandardAnalyzer,但它似乎将这个词分解为“UTTD”,“Equip”,“City”和“TE”。
然后我再次尝试使用WhiteSpaceAnalyzer,但它似乎没有工作......(我不知道为什么)。
你能帮助我吗?我应该解决这个问题吗?顺便说一句,编辑Lucene源并使用Ant重新编译它不是一个选项:(
感谢。
编辑:本文档中还有其他文本。例如:
SHIP TO LESSEE (EQUIPMENT location address): «UTTD_Equip_StreetAddress_TE», «UTTD_Equip_City_TE», «UTTD_Equip_State_MC»
基本上,我正在尝试索引RTF文件,并且每个RTF文件内部都是带变量的表。变量包含«
和»
。我正在尝试在文档中搜索这些变量。我试过搜索"«" + string + "»"
,但它没有用...
此示例可以提供更好的图片:http://i.imgur.com/SwlO1.png
请帮忙。
答案 0 :(得分:0)
KeywordAnalyzer将整个字段标记为单个字符串。如果子字符串位于文档中的不同字段中,听起来这可能是您正在寻找的内容。
请参阅:KeywordAnalyzer
相反,如果您要在单个字段中添加文档的整个内容,并且想要搜索其中嵌入了“_”字符的子字符串,那么我认为WhitespaceAnalyzer可以正常工作。但你表示它不起作用。您能告诉我们您尝试使用WhitespaceAnalyzer时的结果吗?你是否将它用于索引和查询?
答案 1 :(得分:0)
我在这里看到两个选项。在这两种情况下,您都必须构建自定义分析器。
选项1
从StandardTokenizer的语法文件开始并对其进行自定义,以便它将由“_”分隔的文本作为单个标记发出。 (参考Generating a custom Tokenizer for new TokenStream API using JFlex/ Java CC)。使用这个新的Tokenizer和LowerCaseFilter构建您的Analyzer。
Oprion 2
编写由WhiteSpaceTokenizer和自定义TokenFilters组成的自定义分析器。在这些TokenFilters中,您决定如何对WhiteSpaceTokenizer返回的令牌采取行动。
有关分析的详细信息,请参阅http://lucene.apache.org/core/3_6_0/api/core/org/apache/lucene/analysis/package-summary.html