1

我在 Lucene 中存储的一些文档具有包含文件路径或 URI 的字段。如果他们的查询词包含路径或 URI 段,我希望用户能够检索这些文档。

例如,如果路径是

C:\home\user\research\whitepapers\analysis\detail.txt

我希望用户能够通过查询path:whitepapers.

同样,如果 URI 是

http://www.stackoverflow.com/questions/ask

包含的查询uri:questions将检索它。

我是否需要对这些字段使用特殊的分析器,或者 StandardAnaylzer 是否可以完成这项工作?我需要对这些字段进行任何预处理吗?(例如,用空格替换正斜杠或反斜杠?)

欢迎提出建议!

4

1 回答 1

0

您可以使用标准分析仪。我通过将以下函数添加到 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 发行版中尝试它。我想它可以满足您的要求,同时保持域名和文件名不间断。我有没有提到我喜欢单元测试?

于 2010-09-13T09:10:07.580 回答