Solr返回不完整的搜索结果
问题描述:
我是solr的新手,并且创建了一个正在通过xml文件进行搜索的核心。搜索工作正常,但似乎并不完整。当我搜索索引文件时与“A”我得到一个结果,当我使用“U”我没有得到结果,即使有记录将匹配搜索字符串。你能给我一个提示,在哪里检查这个问题?在我看来,schema.xml和data-config.xml似乎正确定义。Solr返回不完整的搜索结果
感谢您的任何建议提前!
的字段类型是“文本”,我重视这里的schema.xml中:
`<?xml version="1.0" encoding="UTF-8"?>
<schema name="example" version="1.5">
<uniqueKey>id</uniqueKey>
<fieldType name="date" class="solr.TrieDateField" positionIncrementGap="0" precisionStep="0"/>
<fieldType name="int" class="solr.TrieIntField" positionIncrementGap="0" precisionStep="0"/>
<fieldType name="long" class="solr.TrieLongField" positionIncrementGap="0" precisionStep="0"/>
<fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="idauftrunters" type="string" indexed="true" required="true" stored="true"/>
<field name="id" type="int" indexed="true" stored="true"/>
<field name="patientname" type="text" indexed="true" stored="true"/>
</schema>`
萨宾
答
对于命名约翰尼ü耶人的时候,查询作为是应返回结果。
对于一个名为Johnny U. Dawg的人,您可能需要添加ClassicFilterFactory或LetterTokenizerFactory,它应该返回结果。
不过,从我个人理解,你想“赫苏斯ü小号加梅斯”显示,当你与ü
这不是SOLR简单的查询,最接近这个功能EdgeNGramFilterFactory但它只需要第一个字母作为您期望的令牌。
实现此目的的一种方法是编写一个scriptTransformer(在您的数据配置xml中),并在每个字母上分割名称,例如this,但使用Javascript。 并将其存储在与您的名称字段(称为名称空间)不同的字段中,并使用copyField将此名称空间添加到您的文本字段。
什么fieldType用于该字段?它有什么tokenozers和过滤器? –
Solr Admin下的“Analysis”页面显示索引内容与查询字符串的比较结果是什么? – MatsLindh
你可以告诉你正在搜索哪个特定字段,以及在schema.xml中如何分析该字段 –