我們有一個SOLR v.5.5.0服務器,我們已經加載了文檔。每個SOLR字段都被複制到我們想要搜索的複合字段中。Solr不能正確搜索多值字段
例如,在我們的模式,我們有:
<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"/>
自定義字段類型被給出的以下tokenisers:
<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>
因此索引字段成爲多值字段。我們使用此字段進行搜索,因爲我們有一個通用搜索功能,我們應該可以在所有字段中搜索。
當我們將數據導入SOLR然後執行搜索時,某些記錄按預期工作。例如,如果我們搜索電子郵件地址(例如select?q=Indexing%3Asomeone%40example.com
),SOLR會提供正確的文檔。
但是,在其他文檔中,SOLR在搜索時(尤其是電子郵件地址)提供0個結果。我們看到的是搜索[email protected]
SOLR找不到文檔,但將查詢更改爲secondexample
SOLR查找文檔。將查詢更改爲[email protected]
SOLR未找到任何文檔。如果我們對字段EmailAddress
(select?q=EmailAddress%3Asecondexample%40example.com
)進行字段搜索,則搜索會按預期成功。
我們不希望對特定命名字段的搜索進行編碼,因爲字段名稱可能會發生變化,並且每次更改我們的搜索服務都不合需要。
有沒有辦法找出爲什麼SOLR不能正確搜索多值字段?
更新 樣品JSON文件(內容模糊化的安全性)」
{
"Phone": "555",
"IndexText": [
"555",
"7854",
"",
"Main App",
"16",
"Life MTG L",
"New MTG LL",
"Application",
"574",
"574",
"[email protected]",
"",
"",
"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": "[email protected]",
"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管理搜索界面採取
看起來奇怪,你可以顯示樣品文件? – Mysterion
注意, 「[email protected]」 是*長於你的'maxGramSize' *。 – femtoRgon
@Mysterion - 增加了一個示例文檔。這些文件包含個人信息,因此無法發佈真實數據。 – user626201