我在Lucene中存储的一些文档包含包含文件路径或URI的字段。如果用户的查询字词包含路径或URI段,我希望用户能够检索这些文档。
例如,如果路径是
C:\home\user\research\whitepapers\analysis\detail.txt
我希望用户能够通过查询path:whitepapers
找到它。
同样,如果URI是
http://www.stackoverflow.com/questions/ask
包含uri:questions
的查询会检索它。
我是否需要在这些领域使用特殊的分析仪,或者StandardAnaylzer是否可以完成这项工作?我是否需要对这些字段进行任何预处理? (例如,用空格替换正斜杠或反斜杠?)
建议欢迎!
答案 0 :(得分:0)
您可以使用StandardAnalyzer。 我通过向Lucene的TestStandardAnalyzer.java添加以下函数来测试它:
public void testBackslashes() throws Exception {
assertAnalyzesTo(a, "C:\\home\\user\\research\\whitepapers\\analysis\\detail.txt", new String[]{"c","home", "user", "research","whitepapers", "analysis", "detail.txt"});
assertAnalyzesTo(a, "http://www.stackoverflow.com/questions/ask", new String[]{"http", "www.stackoverflow.com","questions","ask"});
}
使用Lucene 2.9.1进行单元测试。您可能希望尝试使用特定的Lucene发行版。我想它会做你想要的,同时保持域名和文件名不受破坏。我是否提到我喜欢单元测试?