索引markdown文档以在Apache SOLR中进行全文搜索

时间:2018-09-30 14:36:38

标签: solr full-text-search markdown apache-tika full-text-indexing



我正在使用Apache SOLR索引降价文档。
如您所知,Markdown基本上是纯文本,带有特殊标签,用于加粗和斜体格式。 问题是:如果降价具有粗体或斜体格式,则全文搜索将不起作用。但是,如果降价文档没有格式元素(粗体,斜体或标题,链接等),则全文搜索有效。总而言之,当markdown文档与纯文本相同(即,没有单词具有markdown格式)时,它可以工作。

我得出的结论是,在对文档建立索引之前,需要将markdown转换为纯文本。只有这样,全文搜索才能在所有情况下按预期进行。

我在不同的在线论坛上进行了搜索和阅读。我想我需要实现一个自定义分析器。定制分析器需要先将markdown转换为纯文本,然后对其进行索引。 我认为这种情况类似于Apache Tika对Microsoft文档所做的事情。它解析ms office文档并提取纯文本。 我想我也需要类似的东西。
我也认为降价文件-我需要解析并转换为纯文本。
我已经找到了一种将markdown转换为纯文本的方法。

但是,我不确定是否真的需要创建自定义分析器。我阅读了一些自定义分析器的代码-但它们都使用tokenFilters。据我了解,tokenFilters在流中逐个令牌地进行操作。就我而言,整个markdown语料库必须转换为plain text。因此,请为此建议一种方法。

我考虑过的另一种方法是先将markdown转换为纯文本,然后将纯文本连同markdown一起保存到磁盘。但是,我想避免这种情况并在SOLR中处理。我希望SOLR可以将其转换为纯文本,然后对其进行索引。

  1. 是否应该创建一个custom analyzer并将markdown文档保存到plain text?还是需要custom query parser
  2. 有人可以提供相同的代码示例(伪代码也可以)。

请帮助。

1 个答案:

答案 0 :(得分:0)

Use a StandardTokenizer-它会分割成大多数非数字字符,这应该适合于将Markdown索引为单个术语,而不是保持Markdown语法不变。

  

此令牌生成器将文本字段拆分为令牌,将空格和标点符号视为分隔符。分隔符将被丢弃,但以下情况除外:

     

没有空格的句点(点)将作为令牌的一部分保留下来,包括Internet域名。

     

“ @”字符位于令牌拆分标点集合中,因此电子邮件地址不会保留为单个令牌。

如果您还希望在单词之间分割句点,则可以使用PatternReplaceCharFilterFactory  在用点分隔的单词后面插入空格,不带空格。