例如,在我们的模式中,我们有:
<field name="Key" type="int" indexed="true" stored="true" required="true"/>
<field name="_version_" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="Name" type="text_suggest_ngram" indexed="true" stored="true" required="false"/>
<field name="EmailAddress" type="text_email" indexed="true" stored="true" required="false"/>
<field name="Indexing" type="text_suggest_ngram" indexed="true" stored="true" multiValued="true"/>
大约有20个不同的领域。每个字段都复制到索引中:
<copyField source="Key" dest="Indexing"/>
<copyField source="Name" dest="Indexing"/>
<copyField source="EmailAddress" dest="Indexing"/>
为自定义域类型提供以下标记器:
<fieldType name="text_email" class="solr.TextField"/>
<fieldType name="text_suggest_ngram" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.UAX29URLEmailTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" maxGramSize="20" minGramSize="2"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.UAX29URLEmailTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
</analyzer>
</fieldType>
更新示例JSON文档(内容为安全性而模糊)“
{
"Phone": "555",
"IndexText": [
"555",
"7854",
"",
"Main App",
"16",
"Life MTG L",
"New MTG LL",
"Application",
"574",
"574",
"secondexample@example.com",
"",
"",
"M M S N",
"Open",
"P",
"3876 K E 4 O N W 2619 S B",
"",
"A",
"6055 C P E 32 L S C P B G 1501 S B",
"S I N",
"1597456 1254735"
],
"Id": "7854",
"Name": "Open",
"WP": "",
"OK": "16",
"HP": "574",
"LK": 1048808,
"FN": "",
"PN": "",
"TN": "",
"FN2": "MS",
"LN2": "M M S N",
"CL": "2",
"Type": "P",
"Laddr": "3876 K E 4 O N W 2619 S B",
"EmailAddress": "secondexample@example.com",
"LES": "A",
"PA": "6055 C P E 32 L S C P B G 1501 S B",
"LIT": "S I N",
"S": "N",
"Acc": "1597456 1254735",
"_version_": "1557490405902123010",
"score": 11.771251
}
字段和内容都是从真实数据中编辑的,但它给出了想法。字段名称和内容都是较长的单词。这是取自SOLR管理搜索界面。
好的,所以我们的配置出现了两个错误。
正如@Femtorgon指出的,克的大小是不正确的。增加克大小,然后修复完整的电子邮件地址搜索正确。如果我们搜索完整的电子邮件地址,Solr现在可以正确地找到文档。
UAXURLET
text secondexample e
raw_bytes [73 65 63 6f 6e 64 65 78 61 6d 70 6c 65] [65]
start 0 14
end 13 15
positionLength 1 1
type <ALPHANUM> <ALPHANUM>
position 1 1
问题内容: 我为此感到挣扎,我觉得应该可以,但是也许我在做一些愚蠢的事情。搜索: 返回Source1和Source2的数据。在下面添加术语搜索,我希望返回仅包含Source1s的第一次搜索的子集。使用第一个查询或单独运行时,不返回任何内容。 我知道很难看到这些文档,但是可以说“ Element.sourceSystem.name”存在并且可以使用,因为第一个搜索可以正常工作-非常感谢所有输入。 问
我有一个问题与搜索的特殊字符在solr。我的文档有一个字段标题,有时它可以像泰坦尼克号-1999(它有字符-)。当我试图搜索索尔与"-"我收到一个400错误。我试图逃避这个角色,所以我尝试了像“-”和“\-”这样的东西。有了这些变化,solr不会用错误来回应我,但它会返回0个结果。 如何在solr admin中搜索具有该特殊字符(如“-”或“”?)的内容??? 问候 在这里更新您可以看到我当前的s
本文向大家介绍solr范围搜索,包括了solr范围搜索的使用技巧和注意事项,需要的朋友参考一下 示例 age:[50 TO 60] 匹配年龄在50和60之间(包括50和60)的文档 age:{50 TO 60} 匹配年龄在50到60之间(不包括50到60)的文档 age:[* TO 60] 匹配年龄小于或等于60的文档 age:[50 TO *] 匹配年龄大于或等于50的文档 age:{50 to
本文向大家介绍solr 布尔搜索,包括了solr 布尔搜索的使用技巧和注意事项,需要的朋友参考一下 示例 +firstname:john +surname:doe 匹配名字为john且姓氏为doe的文档。+前缀表示搜索词必须出现(AND)。 +firstname:john -surname:doe 匹配名字为john而名字不是doe的文档。-前缀表示不得出现搜索词(否)。 +firstname:j
本文向大家介绍solr 邻近搜索,包括了solr 邻近搜索的使用技巧和注意事项,需要的朋友参考一下 示例 name:"john doe"~1 搜索特定术语距离(〜1)内的多个术语,i.e将查找包含john匿名doe而不包含john第二名doe的文本
概况 背景 Showcase Google Map Solr GitHub https://github.com/phodal/gmap-solr Solr Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索