我正在使用Apache SOLR索引降价文档。
如您所知,Markdown基本上是纯文本,带有特殊标签,用于加粗和斜体格式。
问题是:如果降价具有粗体或斜体格式,则全文搜索将不起作用。但是,如果降价文档没有格式元素(粗体,斜体或标题,链接等),则全文搜索有效。总而言之,当markdown文档与纯文本相同(即,没有单词具有markdown格式)时,它可以工作。
我得出的结论是,在对文档建立索引之前,需要将markdown转换为纯文本。只有这样,全文搜索才能在所有情况下按预期进行。
我在不同的在线论坛上进行了搜索和阅读。我想我需要实现一个自定义分析器。定制分析器需要先将markdown转换为纯文本,然后对其进行索引。
我认为这种情况类似于Apache Tika
对Microsoft文档所做的事情。它解析ms office文档并提取纯文本。
我想我也需要类似的东西。
我也认为降价文件-我需要解析并转换为纯文本。
我已经找到了一种将markdown转换为纯文本的方法。
但是,我不确定是否真的需要创建自定义分析器。我阅读了一些自定义分析器的代码-但它们都使用tokenFilters
。据我了解,tokenFilters
在流中逐个令牌地进行操作。就我而言,整个markdown
语料库必须转换为plain text
。因此,请为此建议一种方法。
我考虑过的另一种方法是先将markdown转换为纯文本,然后将纯文本连同markdown一起保存到磁盘。但是,我想避免这种情况并在SOLR中处理。我希望SOLR可以将其转换为纯文本,然后对其进行索引。
custom analyzer
并将markdown
文档保存到plain text
?还是需要custom query parser
?请帮助。
答案 0 :(得分:0)
Use a StandardTokenizer-它会分割成大多数非数字字符,这应该适合于将Markdown索引为单个术语,而不是保持Markdown语法不变。
此令牌生成器将文本字段拆分为令牌,将空格和标点符号视为分隔符。分隔符将被丢弃,但以下情况除外:
没有空格的句点(点)将作为令牌的一部分保留下来,包括Internet域名。
“ @”字符位于令牌拆分标点集合中,因此电子邮件地址不会保留为单个令牌。
如果您还希望在单词之间分割句点,则可以使用PatternReplaceCharFilterFactory 在用点分隔的单词后面插入空格,不带空格。