当前位置: 首页 > 知识库问答 >
问题:

Solr-包含多个单词的同义词

尹凌龙
2023-03-14
<fieldType ... >
  <analyzer type="index">
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.WordDelimiterFilterFactory" 
                            catenateWords="1" 
                            preserveOriginal="1"
                            splitOnCaseChange="1"
                            generateWordParts="1" 
                            generateNumberParts="1"         
                            catenateNumbers="1" 
                            catenateAll="1" 
                            />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="30" side="front"/>
  </analyzer>
  <analyzer type="query">    
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LengthFilterFactory" min="2" max="70" />
    <filter class="solr.SynonymFilterFactory" synonyms="syn.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
 </analyzer>
</fieldType>

我的文件:syn.txt

st., st => saint
istambul => istanbul
airport, apt => aéroport
NYC => New York
pt., pt => port
brussels => bruxelles

一切都很好,除了同义词:

"NYC => New York"

我做了一些研究,我发现了以下几点:

所以我试图改变我的配置文件,并在索引中添加过滤器,但它不起作用。

什么东西有什么想法吗?

共有1个答案

屠坚壁
2023-03-14

您正在使用=>执行显式映射。

Solr文档说

显式映射匹配“=>”的LHS上的任何令牌序列,并用RHS上的所有替换替换。这些类型的映射忽略架构中的expand参数。

 类似资料:
  • 我有一个包含50000个单词的单词列表,还有一个逐行查找字母字符的txt文件。我试图通过按顺序阅读单词列表中的单词来找到包含7个不同字母的单词,我为此编写了一个方法。 首先,我浏览单词并同步字符列表,然后通过导航字母txt文件在单词中相互检查,如果有,则增加计数器。通过这种方式,我试图了解单词中有多少不同的字母,最后,如果它提供了控制,我会将其添加到列表中。 读取txt文件并返回哈希集。 但它不是

  • 如何使用PHP正则表达式检查字符串变量$str是否包含单词“cat”,但不包含单词“dog”。 案例1:$str=“我的宠物:鹦鹉”- 我尝试过这个方法,但我想知道是否有一个正则表达式可以做到这一点

  • 问题内容: 我正在尝试从文本中提取所有包含指定单词的句子。 但它正在回报我: 代替 : 有什么帮助吗? 问题答案:

  • 我有两个问题。第一)是如何包含两个字母之间带有点的单词,比如“C.J.Johnson”;第二)是是否可以创建包含点的单词列表,我的regex将包括它们?基本上,我想用单词搜索文本文件,并列出所有包含这些单词的句子。我的代码: 我认为第一个问题是可行的。Ive尝试将//s添加到

  • 问题内容: 据我所知,“ …”表示下面代码段中数组的长度。 另一方面,正如我猜想的那样,“ …”表示将以下代码段中的切片拆分为int的参数。我对此不太确定。 现在,两种含义的差异使我很难理解“ …”是什么。 问题答案: 您已经注意到Go中的两种情况。实际上,有3个: 在编译时 评估为[3] int {1,2,3} 解压缩作为函数的参数。这与您错过的一个(可变参数的定义)相匹配: 现在是另一个问题(

  • 问题内容: 我需要一个选择,它会返回如下结果: 我需要所有结果,即这包括带有’word2 word3 word1’或’word1 word3 word2’或三者的任何其他组合的字符串。 所有单词都必须包含在结果中。 问题答案: 相当慢,但是可以包括 任何 单词的工作方法: 如果您需要 所有 单词出现,请使用以下命令: 如果您想要更快的速度,则需要研究全文搜索,这对于每种数据库类型都是非常特定的。