Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr搜索标签或提及_Solr - Fatal编程技术网

Solr搜索标签或提及

Solr搜索标签或提及,solr,Solr,我们使用solr版本3.5搜索推文,我使用以下设置的WordDelimiterFactory,可以搜索@username或\hashtags: <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" split

我们使用solr版本3.5搜索推文,我使用以下设置的
WordDelimiterFactory
,可以搜索
@username
\hashtags

<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" splitOnNumerics="0" preserveOriginal="1" handleAsChar="@#"/>

好的,通过阅读您提到的SOLR-2059补丁,看起来他们已经将WordDelimiterFactory上的
handleAsChar
属性替换为
types
属性。以下是Analyzer、Tokenizer和Token Filters Solr Wiki页面中该属性的规范:

types=“wdfftypes.txt”允许对此筛选器进行自定义标记化。该文件应该存在于solr/conf目录中,并且条目的格式(不带引号)“%=>ALPHA”或“\u002C=>DIGIT”。允许的类型有:下、上、字母、数字、字母数、子字

因此,如果我们以本文档以及SOLR-2059中的文件为例,我建议如下:

然后定义twittertypes.txt文件,如下所示,并将其放置在Solr实例中schema.xml文件所在的文件夹中(可能是conf文件夹)

请注意,您需要使用Unicode字符(UTF-8)作为哈希符号,因为它在文本文件中被视为注释

根据所有文档,这将解决您的问题,并将#和@符号视为alpha字符,这将提供您正在寻找的行为。

您还可以构建,它将解析用户名和hashtag作为本机的特殊标记。然后,您可以添加一个自定义过滤器,该过滤器规范化这些用户名和hashtag的大小写(假定它们不区分大小写),同时保持其他标记不变:

<fieldType name="text_twitter" class="solr.TextField" positionIncrementGap="100" multiValued="true">
  <analyzer type="index">
    <tokenizer class="org.opentapioca.analysis.twitter.TwitterTokenizerFactory" />
    <filter class="org.opentapioca.analysis.twitter.TwitterLowercaseFilterFactory" />
  </analyzer>
  <analyzer type="query">
     <tokenizer class="org.opentapioca.analysis.twitter.TwitterTokenizerFactory" />
     <filter class="org.opentapioca.analysis.twitter.TwitterLowercaseFilterFactory" />
  </analyzer>
</fieldType>


您能否显示您正在使用的整个fieldType定义,以便在其他筛选器或标记器可能影响您的结果时我们可以显示?就我个人而言,我只需在索引中添加两个字段,一个用于提及列表,一个用于标记。将这些内容添加到索引时,从tweet中解析出来。这样你就不需要依赖新功能了。谢谢Paige,昨晚很晚才解决了这个问题,正如你所说的那样工作。我完成了上述所有工作,重新启动了solr服务,仍然在搜索#pizza,pizza会产生相同的结果,有什么线索或者我应该遵循的步骤吗?在进行配置更改后,你是否重新编制了文档索引?每当您在schema.xml文件中进行影响文档索引方式的更改时,都必须重新为文档编制索引,以使更改反映在索引项中。是的,我做了
manage.py rebuild\u index
manage.py update\u index
仍然一样,可能是我做错了什么。
<fieldType name="text_twitter" class="solr.TextField" positionIncrementGap="100" multiValued="true">
  <analyzer type="index">
    <tokenizer class="org.opentapioca.analysis.twitter.TwitterTokenizerFactory" />
    <filter class="org.opentapioca.analysis.twitter.TwitterLowercaseFilterFactory" />
  </analyzer>
  <analyzer type="query">
     <tokenizer class="org.opentapioca.analysis.twitter.TwitterTokenizerFactory" />
     <filter class="org.opentapioca.analysis.twitter.TwitterLowercaseFilterFactory" />
  </analyzer>
</fieldType>