首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在将数据传递给Solr master索引之前,解析数据中的空格、制表符和其他不可打印的字符是不是很糟糕?

在将数据传递给Solr master索引之前,解析数据中的空格、制表符和其他不可打印的字符是不是很糟糕?
EN

Stack Overflow用户
提问于 2015-11-07 02:49:30
回答 2查看 51关注 0票数 0

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

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

代码语言:javascript
复制
<?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;

-输出

这是要索引的样本

EN

回答 2

Stack Overflow用户

发布于 2015-11-07 07:47:02

基于你给出的例子。例如,当输出示例被索引时,Solr现有的查询分析器将无法正确地对其进行标记化。

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

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

票数 0
EN

Stack Overflow用户

发布于 2015-11-07 08:17:26

您可以配置在Solr中使用哪个Tokenizer。在https://cwiki.apache.org/confluence/display/solr/Tokenizers上有一个列表

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

正确的解决方案是从一开始就不给这样的流提供数据。如果您需要将紧密连接的字符串用于内部内容,那么可以为索引生成一个单独的版本,在该版本中,您可以用空格而不是空字符串来替换有问题的字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33573626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档