首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >相似词的Solr模糊搜索

相似词的Solr模糊搜索
EN

Stack Overflow用户
提问于 2012-03-27 03:50:56
回答 2查看 23.7K关注 0票数 14

我试图对"jahngir“~ 0.2进行模糊搜索,它不返回任何结果。我的索引有数据"JAHANGIR RAHMAN MD“的记录。如果我尝试搜索精确的单词"jahangir“~ 0.2,它就有效了。有人能帮我一下吗?我做错了什么。我花了很多时间试图弄清楚Solr模糊搜索是如何工作的。任何解释Solr模糊搜索的链接都是有帮助的。下面是我用于索引的文本字段。提前谢谢。

代码语言:javascript
运行
复制
 <fieldType name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <!-- in this example, we will only use synonyms at query time
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
    -->
    <!-- Case insensitive stop word removal.
      add enablePositionIncrements=true in both the index and query
      analyzers to leave a 'gap' for more accurate phrase queries.
    -->
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="stopwords.txt"
            enablePositionIncrements="true"
            />
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
    <filter class="solr.PorterStemFilterFactory"/>
    <filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
    <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="false"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="stopwords.txt"
            enablePositionIncrements="true"
            />
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
    <filter class="solr.PorterStemFilterFactory"/>
    <filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
    <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="false"/>
  </analyzer>
</fieldType>

下面是响应后对我起作用的配置。谢谢!

代码语言:javascript
运行
复制
<!-- Modified to fit fuzzy queries -->  
    <fieldType name="text_exact_fuzzy" class="solr.TextField" omitNorms="false">
      <analyzer type="index">
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.StandardFilterFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-28 20:50:56

不,您不需要启用词干,使用词干器可能会导致问题。

文本字段上有太多的过滤器。你把一个词转换成波特词干,这通常不是一个真正的词,然后拿出语音键。表面词很少与索引中存储的语音键匹配。语音键将与原来的单词有很大的不同。

使用管理UI中的分析器页面查看术语是如何处理的。

我建议将近似匹配的类型划分为不同的字段。

  • text_exact:小写,就这样
  • text_stem:小写和阀杆
  • text_phonetic:小写和双元电话机,不要干

在text_exact中使用模糊匹配,因为它处理输入错误。不要对其他字段使用模糊。

您可以对这些字段进行不同的加权,精确匹配比其他字段更高质量的匹配,因此它可以有更大的权重。词干匹配比拼音匹配更好,所以它的重量应该小于精确,但要比语音大。

票数 20
EN

Stack Overflow用户

发布于 2012-03-27 12:09:03

为了使模糊搜索有效,您需要为所需的语言启用正确的词干和/或筛选工厂。有关更多细节,请参见Langauge分析主题在Solr Wiki上。

编辑:,关于索引数据的不同方法以及这对搜索数据的影响的更多细节,请参见分析器、托卡器和令牌过滤器

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

https://stackoverflow.com/questions/9883151

复制
相关文章

相似问题

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