2012-08-10 40 views
1

谢谢:)在Lucene的搜索,如“UTTD_Equip_City_TE”字读

我试图寻找使用Lucene像“UTTD_Equip_City_TE”字样跨RTF文档。这个词出现在两种不同的形式:

  • «UTTD_Equip_City_TE»,
  • «UTTD_Equip_City_TE»

我先用StandardAnalyzer尝试过,但似乎这个词分解成 “UTTD”,“装备“,”城市“和”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

KeywordAnalyzer将整个字段标记为单个字符串。这听起来像这可能是你要找的东西,如果子字符串在你的文档中的不同领域。

参见:KeywordAnalyzer

相反,如果你是一个字段中添加文件的全部内容,并要搜索与嵌入子“_”之内它的字符,那么我会认为WhitespaceAnalyzer会起作用。你说它不起作用,但是。您能否告诉我们当您尝试使用WhitespaceAnalyzer时的结果?你是否将它用于索引和查询?

+0

我应该使用KeywordAnalyzer两个索引和搜索?或只搜索?谢谢,jwismar。 – 2012-08-10 17:16:29

+0

在正常情况下,您会希望您的索引和搜索分析仪是相同的。从你的描述来看,我认为这将在这里适合你。 – jwismar 2012-08-10 17:17:54

+0

本文档中还有其他文本。例如:...发送到LESSEE(设备位置地址):“UTTD_Equip_StreetAddress_TE”,“UTTD_Equip_City_TE”,“UTTD_Equip_State_MC”....如果我使用KeywordAnalyzer并尝试搜索UTTD_Equip_City_TE,这是否仍然有效? – 2012-08-10 17:20:54

0

我在这里看到两个选项。在这两种情况下,您都必须构建自定义分析器。

选项1

开始StandardTokenizer的语法文件,因此其发射由“_”作为单个标记分隔的文本进行自定义。 (请参阅Generating a custom Tokenizer for new TokenStream API using JFlex/ Java CC)。使用这个新的Tokenizer和LowerCaseFilter构建你的分析器。

Oprion 2

编写自定义分析仪是由WhiteSpaceTokenizer和定制TokenFilters的。在这些TokenFilters中,您决定如何处理由WhiteSpaceTokenizer返回的令牌。

参考http://lucene.apache.org/core/3_6_0/api/core/org/apache/lucene/analysis/package-summary.html更多细节上的分析