在传递索引到Solr master之前解析空格,制表符和其他不可打印字符的数据是不是很难?

时间:2015-11-06 18:49:30

标签: parsing solr

我说的是在一些与Solr无关的程序中发生的自定义解析阶段,甚至在Solr tokenizer可以处理它之前。如果我解析说白色空格,制表符和其他不可打印字符的数据,那么当该数据实际来到Solr master进行索引时,Solr标记器如何区分之前用空格或制表符或其他非空格分隔的单独单词可打印的字符?

预处理器的示例代码和输出:

<?php$text = '<div>This is a sample text to be indexed</div>';
//Remove HTML tags
$text_refined1 = strip_tags($text);
//Remove non-printable unicode characters
$text_refined2 = preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F\x80-\x9F]/u',    '', $text_refined1);
//Remove line feeds, carriage returns and tabs
$text_refined3 = preg_replace('/\s+/', '', $text_refined2);
echo $text_refined3;

--- ---输出

Thisisasampletexttobeindexed

2 个答案:

答案 0 :(得分:0)

根据您提供的示例。例如输出Thisisasampletexttoin索引,Solr的现有查询分析器将无法正确标记它。

Solr(Lucene)需要一些方法来分离输入中的单个单词。

您可以使用solr的分析管理UI来使用不同的分析器测试此字符串。在我的solr测试实例中,它们都返回原始字符串。

答案 1 :(得分:0)

您可以配置要在Solr中使用的Tokenizer。 https://cwiki.apache.org/confluence/display/solr/Tokenizers

上有一个列表

Solr中任何现有的Tokenizer都不支持正确索引非分隔英语单词流。你可以想象用字典构建一个自定义的,但它会产生错误,因为输入是模糊的。或者您可以使用N-Gram Tokenizer并在搜索时接受大量误报。

正确的解决方案不是首先提供这样的流。如果你需要内部紧密连接的字符串,那么为索引生成一个单独的版本,用空格而不是空字符串替换有问题的字符。