您好,登錄后才能下訂單哦!
這篇文章主要介紹“Field、CopyField、DynamicField怎么使用”,在日常操作中,相信很多人在Field、CopyField、DynamicField怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Field、CopyField、DynamicField怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
Field:
Field就是一個字段,定義一個Field很簡單:
基本上屬性也和FieldType類似,他的屬性會覆蓋掉FieldType的同名屬性。
CopyField(本段內容直接從solr中文網copy而來):
你可能想讓document的一些字段可以多次使用。solr 有一個字段復制機制,可以提交多個不同類型字段集中到一個字段。字段復制主要涉及兩個概念,source和destination,一個是要復制的字段,另一個是要復制到哪個字段,以下是個例子:
1 | <
copyField
source
=
"cat"
dest
=
"text"
maxChars
=
"30000"
/> |
上例中,如果text字段有數據的話,cat字段的內容將被添加到text字段中。maxChars 參數,一個int類型參數,用于限制復制的字符數。
source和destination都支持通配符。以下是一個將所有以 _t 結尾的字段全部復制到text字段中。
1 | <
copyField
source
=
"*_t"
dest
=
"text"
maxChars
=
"25000"
/> |
其實說的簡單一點,比如現在你要查詢包涵"Java"的博客, 那么你肯定要查內容,標題是否包含Java,但是solr不能像SQL那樣,where tittle like '%Java%' or content like '%Java%'. 這個時候copyField就派上用場了, 定義一個新字段,將title和content 復制到這個新字段,索引的時候,直接從這個新字段查詢,這樣就達到目地了。 這便是copyField的典型應用場景 。注意:如果dest由多個source構成,就需要將其指定為multiValued。
在網上找了一個例子:
<schema name="eshequn.post.db_post.0" version="1.1" xmlns:xi="http://www.w3.org/2001/XInclude"> <fields> <!-- for title --> <field name="t" type="text" indexed="true" stored="false" /> <!-- for abstract --> <field name="a" type="text" indexed="true" stored="false" /> <!-- for title and abstract --> <field name="ta" type="text" indexed="true" stored="false" multiValued="true"/> </fields> <copyField source="t" dest="ta" /> <copyField source="a" dest="ta" /> </schema>
DynamicField:
動態字段(Dynamic fields)允許 solr 索引沒有在 schema 中明確定義的字段。這個在忘記定義一些字段時很有用。動態字段可以讓系統更靈活,通用性更強。
動態字段和常規字段類似,除了它名字中包含一個通配符外,在索引文檔時,一個字段如果在常規字段中沒有匹配時,將到動態字段中匹配。
假設schema中定義了一個叫*_i的動態動態字段,如果要索引一個叫 cost_i 的字段,但是 schema 中不存在 cost_i 的字段,這樣 cost_i 將被索引到 *_i 字段中。
動態字段也是定義在 schema.xml 文件中,和其他字段一樣,它也有個名詞,字段類型,和屬性。
1 | <
dynamicField
name
=
"*_i"
type
=
"sint"
indexed
=
"true"
stored
=
"true"
/> |
建議在 schema.xml 定義一些基本的動態字段,以備擴展之用。
到此,關于“Field、CopyField、DynamicField怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。