




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
利用計(jì)算機(jī)大容量和快速計(jì)算的能力構(gòu)建本章介紹如何利用開源的信息檢索— 信息檢索(InformationRetrieval)息 與檢索”(InformationStorageand與數(shù)據(jù)庫(kù)查詢不同,信息檢索的處理對(duì)象是郵件、多等。因此,信息檢索系統(tǒng)建設(shè),從信息檢索的定義中可以看出,信息檢索包一個(gè)是組織和,根據(jù)檢索對(duì)象的外在特 圖中實(shí)線表示信息的過程,對(duì)特征、有檢索價(jià)值的標(biāo)識(shí)及其屬信息,如、的位置查找的數(shù)據(jù)結(jié)構(gòu)將這些信息起 LuceneAPI Lucene加入到Apache
檢索的引擎,IBM的商業(yè)軟件WebSphere中也采用了1.Lucene的特 2 Lucene使用Lucen3.5.0 ...。...。這 的API包,使用Lucene時(shí)需要導(dǎo)入這個(gè)程序/docs/api/index.html:API文檔3.Lucene的主 IndexWriter、索 器IndexReader、索引編 的枚舉類型Version就位于這個(gè)包第12章基于Java Field 類文檔()表示信息檢索系統(tǒng)中索引一個(gè)文檔由一組字段(Field)組成,每個(gè)字,字段只有被在文檔中才能被索引和 (1)publicfinalvoidadd(Fieldable(1)publicfinalvoidadd(Fieldable返回name指定的字段的值。如果當(dāng)前文檔publicFieldable[]getFieldables(String(3)publicpublicFieldable[]getFieldables(String返回文檔中名稱為name的的第一個(gè)字段/所(4)publicfinalList<Fieldable>(5)publicfinal emoveField(String Field 字段可 在文檔中對(duì)象的組成部分返回,而沒 Field類在 1Field類的性Field類包含三個(gè)嵌指示是否對(duì)字段進(jìn)行指示是否將字 在文檔–– 指示是否對(duì)字段做索引以及如
對(duì)字段值進(jìn)行分詞,并建立詞匯級(jí)(分詞結(jié)果)的索引。通常用于文本指示是否及如 字段的
對(duì)字段值分詞并建立詞匯級(jí)索引,但不計(jì)算字段的權(quán)值,所有字段在檢索只建立字段級(jí)的索引,不分詞,也不 字段的值,以便于在索 詞向量以及詞的偏移量信息(的結(jié)束位置息法(1)public2Field法(1)public
Fi T t(2)public
(3)publicField(String TokenStream類型,表示一個(gè)切分TokenStream類是一個(gè)抽象類,本身不能創(chuàng)建實(shí)TokenStream類TokenStream類定義的close()方法關(guān)閉切分項(xiàng)(4)publicField(StringTokenStreamtokenStream,索引中不字段值,只對(duì)分詞的結(jié)果進(jìn)行索引。分詞的結(jié)果由參數(shù)tokenStream指定。是否詞向3Field類的普通方(1)String返回字段的名稱,此方法由Fieldable接口定義(3)pub(3)puboidsetValue(String(4)Reader(5)TokenStream Field (Directory)代表了Lucene的索引的 Directory是一個(gè)抽象類,它是所有表示索引置,其它類型的 Directory類只有Directory類只有一個(gè)無參數(shù)的構(gòu)造方–public voiddeleteFile(Stringthrows刪 中指定的文件name String[]listAll()throwsIOException以字符串?dāng)?shù)組形式返 中所有文件的名稱 booleanfileExists(String判斷文件是否存在,如果指定的文件name回true longfileLength(String返 中name指定的文件的長(zhǎng)度5public
longfileModified(Stringname)throwsIOException返回name指定的文件的上次修改時(shí)間,返回值為1970年1月1日00:00:00經(jīng)過的毫秒6public voiddeleteFile(Stringthrows刪 中參數(shù)name指定的文件7publicvoidcopy(DirectoryStringsrc,Stringdest)throws 8public voidthrows––關(guān)閉當(dāng) RAMDirectory類表示內(nèi)存,是Directory類的直接子類,表示在內(nèi)存當(dāng)中的索引的位 RAMDirectory throws , dir的內(nèi)容僅會(huì)在創(chuàng)建當(dāng)前內(nèi)存時(shí)被加載至內(nèi)存,而dir的任何后續(xù)的改變,都不會(huì)再反映到所創(chuàng)建的內(nèi)存中。FSDirectoryFSDirectory是文件系 該類是一個(gè)抽象類,不能用new關(guān)鍵字創(chuàng)建實(shí)publicstaticFSDirectoryopen(FilethrowsSolaris和Windows64位JRE,實(shí)際返回的是若當(dāng)前系統(tǒng)平臺(tái)是其它Windows操作系統(tǒng)下的非64位JRE,則實(shí)際返回SimpleFSDirectory類為簡(jiǎn)單文件系統(tǒng) publicSimpleFSDirectory(File 如果程序明確運(yùn)行在Windows 如果程序明確運(yùn)行在Windows操作系統(tǒng)下的NIOFSDirectoryNIOFSDirectory類為新IO(NewI/O)文件系 裝非Windows系統(tǒng)中的 publicNIOFSDirectory(File 。MMapDirectory類為內(nèi)存映 Solaris和Windows64位JRE環(huán)境下的 publicMMapDirectory(Filethrows 如果程序僅運(yùn)行于SunSolaris和Windows64位 Field 在Lucene中,分析器是一種可以對(duì)文本字串 yzer
表中的前5個(gè)分析器均位于Lucene的程序 抽象 TokenStreamtokenStream(StringReader 此外,yzer類還實(shí)現(xiàn)了java.io.Closeable Stopyzer類是停用詞分析器,它可以去除原始文Stopyzer原始文本 is .Pleasecontactmewhenyou’reatconvenient切分結(jié)果:/my/ Stop yzer(1)public yzer(Version參數(shù)matchVersion表示使用的Lucene版Lucene來說,此參數(shù)應(yīng)為Version.LUCENE_35 yzer內(nèi)置的缺省停用詞表包括a、an、參數(shù)matchVersion表示使用的Lucene版Lucene來說,此參數(shù)應(yīng)為Version.LUCENE_35(2)public yzer(VersionSet<?>stopWords指stopWords指定FilestopwordsFile)FilestopwordsFile)(4)public yzer(VersionReaderstopwords)throwsIOException yzer 可以切分 原始文本 is .Pleasecontactmewhenyou’reatconvenient切分結(jié)果:/m /lease/contact/me/when/ Standard yzer(1)public yzer(Version詞表,該停用詞表與Stopyzer內(nèi)置的缺省停(2)public yzer(VersionSet<?>(3)public yzer(VersionFilethrowsIOException(4)ublic zerthrowsIOException 對(duì)中文采用二元切分法,將相鄰的兩個(gè)字作為一個(gè)切分you’reatconvenient is .Pleaseyou’reatconvenient ,方便時(shí) CJK yzer(1)public yzer(Version yzer類的內(nèi)置停用詞表與 yzer內(nèi)置停用詞表個(gè)別地方略有差異,(2)public yzer(VersionSet<?> yzerSmartChinese yzer析系統(tǒng)ICTCLAS(InstituteofComputingTechnology,ChineseLexical ysisSystem)基于隱馬爾科夫模型(HiddenMarkovModel, is .Pleasecontactmewhenyou’reatconvenienttime. 切分結(jié)果:/我/的/郵箱/是 /方便SmartChinese yzer(1)public yzer(Version(2)public
yzer(VersionbooleanSet(3)publicSetstopWords指定 1.0版開始,IK 先進(jìn)。高效率:在PIII1G內(nèi)存?zhèn)€人機(jī)器上, mmseg4j用Chih-HaoTsai的MMSeg算法實(shí)現(xiàn)的 MMSeg算法有兩種分詞方法: 則過慮 (HiddenMarkovModel,HMM), //imdict- TokenStream boolean(2)publicvoidreset()throwsIOExceptionpublicvoidend()throwsIOException(3)publicvoidclose()throws(4)public<AextendsAttribute>AaddAttribute(Class<A>Stringintintint返回切分項(xiàng)的位置增量,若兩個(gè)切分項(xiàng)在原始文本時(shí)相鄰,則返回1,否則,返回兩個(gè)切分項(xiàng)中間的詞1Stringboolean 是則返回true,否則返回常用屬性 插入材料 Zip 分詞器擴(kuò)展配置停用字 IK yzer署在項(xiàng)目中引入 例如放到
Java應(yīng)用項(xiàng)目是JavaWeb應(yīng)用項(xiàng)目是WEB- 用IK 第12章基于JavaLucene的索引結(jié)類Lucene使用文件系統(tǒng)管理器索引,一個(gè)索引 Lucene索引的對(duì)象是文檔,因此,段由文檔文檔由多個(gè)字段組成,字段經(jīng)過分析器的分析, 在文件系統(tǒng)中,索引對(duì)應(yīng)了文件,它由索引文件的,就是一個(gè)索引。一個(gè)索引通1.段(x為字母或數(shù)字) (關(guān)于segments_x的信息) 建立索引時(shí)使用的Lucene版本號(hào)引更 (eetee_0.dt_0.d段的數(shù)段中包含的文段中包含的文檔段中文件的相關(guān)信息件.fdt、.fdx2件.fdt、.fdx 3.與索引項(xiàng)有關(guān)的件.tis、.tii。件這些文件.tis、.tii。4與詞向量有關(guān)的記錄索引詞向量信息,包括三個(gè)文件:.tvf.tvd、.tvx 5.包括.frq、.prx 6.管理用件包括.del和write.lock兩個(gè)文時(shí),表示程序正在修改索引,通過這個(gè)文件可以件件 了.cfs中所有項(xiàng)目的項(xiàng) Lucene的索引結(jié)類Lucene35publicIndexWriterConfig(Version 參數(shù)matchVersion表示使用的Lucene版本,對(duì)3.5版該參數(shù)matchVersion表示使用的Lucene版本,對(duì)3.5版來說,此參數(shù)應(yīng)為Version.LUCENE_35參 yzer表示建立索引時(shí)使用的分析器IndexWriter的索引寫到索引中,它只有一個(gè)構(gòu)造方法:IndexWriterConfigconf)throwsCorruptIndexException,publicIndexWriterConfigconf)throwsCorruptIndexException,IndexReader類是一個(gè)抽象類,表示索引 IndexReader類提供了多種重寫的open()方法(1)publicstaticIndexReaderopen(DirectorythrowsCorruptIndexException, 器為只讀,參數(shù)readOnly為false時(shí),可以(2)publicstaticIndexReaderopen(DirectorybooleanthrowsCorruptIndexException,Lucene的索引結(jié)類 (yzer類及其子類)指定對(duì)索引字段內(nèi)容的切分方式,使用封裝類(Directory類及其子//指定索Directoryd=FSDirectory.open(new//指定分 yzer=new IndexWriterConfigconf=new (3)創(chuàng)建IndexWriter對(duì)象,將要索引的文()IndexWriter1publicvoid throws2publicvoid 3publicvoid >throwsCorruptIndexException,將指定的文檔集合docs添加到索引4publicvoid > throwsCorrutIndexExcetion,用指定的分析 IndexWriterIndexWriterindexWriter=newIndexWriter(d,doc FieldFieldPath=newField( doc.add(FieldPath);//將addr字段加入 publicvoidthrows【例12.4本例對(duì)在項(xiàng)目\source子下的資源進(jìn)行索引,這些資源是期章,經(jīng)初步加工 IndexReader類中定義了 (1)public(2)public (3)public int(4)public (intn) Collection<String>getFieldNames(IndexReader.FieldOption2IndexReader.FieldOption.INDEXED:已進(jìn)行了索引的所2IndexReader.FieldOption.INDEXED:已進(jìn)行了索引的所4INDEXED_WITH_TERMVECTOR:已進(jìn)行了索引并且6TERMVECTOR(6)publicint(7)publicfinalvoidthrows 【例12.5 引本程 通常,信息檢索系統(tǒng)中的資源應(yīng)隨著時(shí)間的有時(shí)也需要廢棄現(xiàn)有的索引,建立全新的索引,IndexWriterConfigIndexWriterConfig2IndexWriterConfig.OpenMode.以覆蓋方式建立索引,原有的索引將被清除,強(qiáng)制創(chuàng)建的索3缺省在,則以追加方式創(chuàng) publicIndexWriterConfig.OpenMode indexWriter類和IndexReader類都提供了刪除。類修飾符與返方說public類修飾符與返方說public 刪除包含索引項(xiàng)termpublics(Term...刪除包含terms中指定的文publics(Query刪除與查詢query相匹配public刪除與查詢queries中任何一個(gè)相匹的文public刪除索引中所有publicpublic 刪除文檔號(hào) um的文public刪除包含索引項(xiàng)term為被刪除的文檔的public恢復(fù)被刪除的文(1)IndexWriter類中的刪除方法,除(2)IndexReader類中的刪除方法,全部會(huì)IndexReader類將刪除的文檔存放在.del文件中,IndexReader類將刪除的文檔存放在.del文件中, 或檢索到被刪除的文檔,非該文 IndexWriter (1)publicvoid
(Termterm, throwsthrowsCorrutIndexExcetion,更更新包含有索引項(xiàng)term的文檔,原有內(nèi)容用參數(shù)doc指定的文檔替換(2)publicvoid
(Term
throwsthrowsCorruptIndexException,更新包含有索引項(xiàng)term的文檔,原有內(nèi)容用參數(shù)doc指定的文檔替換。對(duì)文檔內(nèi)容的分析使用指定的分析 yzer(3)publicvoid >docs)throwsCorruptIndexException,IOException更新包含有索引項(xiàng)term的文檔,原有內(nèi)容用參數(shù)docs指定文檔集合替換(4)publicvoid s(Term > throwsthrowsCorruptIndexException,更新包含有索引項(xiàng)更新包含有索引項(xiàng)term的文檔,原有內(nèi)容用參數(shù)docs檔集合替換。對(duì)文檔
yzer變的字段,,才能保證那些沒有發(fā) 第12章基于Java 濾 濾檢索是信息檢索系統(tǒng)的表現(xiàn)形式出的查詢要求(詞或者短語)找到與用出的查詢要求(詞或者短語)找到與用戶查詢相匹Lucene多,通常各種類型的IndexSearcher作IndexSearcher類代表了索引搜索器,是檢索 作IndexReader類型,經(jīng)由該參數(shù),索引搜索器與指定的索引相關(guān)聯(lián)。IndexSearcher類 了拋出異常部分) 了拋出異常部分)IndexSearcher類的常用方publicpublicsearch(QueryFilterint返回與查詢query相匹配的、符合過濾條件filter的前n個(gè)文檔,如不使用過濾器,可以publicsearch(QueryintSort返回與查詢query相匹配的前n個(gè)文檔,返回publicsearch(QueryFilter返回與查詢query相匹配的、符合過濾條件intSortpublicQueryintublicTo返回與查詢 Filterfilter,intn)后的前n個(gè)文檔,返回結(jié)果用過濾條件filterdoc(intpublicQueryParser類是對(duì)用戶查詢的解析器,其作QueryParserpublicQueryParser(VersionStringyzerQueryParser類的最重要方法是parse()方法,定publicQueryparse(Stringthrows 查 字段中包 查 字段中包 詢puter檔computer+puter“+”表示必須包含,返回一定包含scienceputercomputer!scienceputer-例如返回包含foam、roams等詞的文檔。“~的鄰近檢索,“~author:[AidaTOCarmen](1)publicint此屬性表示索引中符合IndexSearcher對(duì)象的search()searchAfter()方法中指定查詢的(1)publicint此屬性表示索引中符合IndexSearcher對(duì)象的search()searchAfter()方法中指定查詢的所有文檔的數(shù)(2)publicScoreDoc[]此屬性返回ScoreDocIndexSearcher對(duì)象的search()方法和searchAfter()方法實(shí)際earc()earcter()方類IndexSearcher類中與排序有關(guān)的search()方法類IndexSearcher類中與排序有關(guān)的search()方法TopFieldDocs類除了繼承Topdocs類的totalHitspublicSortField[]ScoreDoc類用于封裝一個(gè)檢索返回文檔的信息, :(1)publicint(2)publicfloat 濾 濾 4.::(1)Term–利用此方法,可以創(chuàng)建一個(gè)字段為fld、查詢單詞為的查詢?cè)~實(shí)例(2)Term類–該構(gòu)造方法的參數(shù)為查詢?cè)~對(duì)象t1單詞檢索區(qū)分大小寫,系統(tǒng)本身不負(fù)責(zé)大小寫的 1單詞檢索區(qū)分大小寫,系統(tǒng)本身不負(fù)責(zé)大小寫的2查詢單詞的文本必須對(duì)應(yīng)一個(gè)索引單元,必須根 3單詞查詢特別適用于未分析但建立索引的文本, erpublicTermRangeQuery(StringStringlowerTerm,StringupperTerm,boolean其 1可以對(duì)文檔的任何文本字段進(jìn)行范圍檢索,3下界單詞和上界單詞均可以為3下界單詞和上界單詞均可以為null,null表 PrefixQuery(Term 如返回該字段 的文檔(注意,在分詞publicWildcardQuery(Term其中的參數(shù)為查詢?cè)~對(duì)象,在構(gòu)建查詢?cè)~對(duì)象時(shí),查其中的參數(shù)為查詢?cè)~對(duì)象,在構(gòu)建查詢?cè)~對(duì)象時(shí),查詢?cè)~中應(yīng)包括通配符,通配符可以位于查詢?cè)~文本中的任 uer檔 檔 public void voidadd(Term““(2)publicvoidadd(Termterm,int(3)publicvoidsetSlop(int 例如,查詢單詞的次序?yàn)閐igitallibrary,索引詞的次序?yàn)閘ibrarydigital,索引詞的要排索代碼索代碼不僅可以命中題名title字段中出現(xiàn)digitallibrary的文而且,可以命中題名為“ANOPTIMIZEDCOMBINATORIALLIBRARYBYDIGITALIMAGINGSPECTROSCOPY”的文檔需需要注意的T3。多短語檢索可以是看作是短語檢索的另外一添加多個(gè)查詢單詞,但這些單詞之間是“與publicvoidadd(Term[]publicvoidadd(Term[]terms,int 括digitallibraries BooleanQuery類是代表布爾查詢的類,該類 BooleanQuery類常用的構(gòu)造方法publicBooleanQuery()BooleanQuery(1)publicvoidadd(Queryquery,BooleanClause.Occur––與子查詢相匹配,對(duì)––中可以包–中可以包含與子查詢publicstaticint1024(publicstaticint1024 uer Lucene中代表模糊查詢的類是FuzzyQuery類。該類是算法最早由 FuzzyQuery(1)publicFuzzyQuery(TermfloatminSimilarity,intprefixLength,intmaxExpansions)創(chuàng)建一個(gè)模糊查詢對(duì)象,查詢?cè)~對(duì)象由參數(shù)term指定參數(shù)minSimilarity值范圍是[0.0,1.0),缺省值為0.5–minSimilarity 在模糊查詢中,可以指定查詢?cè)~中的一部分前綴做精確配,在模糊查詢中,可以指定查詢?cè)~中的一部分前綴做精確配,其余部分進(jìn)行模糊匹配,參數(shù)prefixLength的作用就是aoaEpaios(2)publicFuzzyQuery(Term(3)publicFuzzyQuery(Termfloat(4)publicFuzzyQuery(Term 濾 濾在信息檢索系統(tǒng)中,找出與用戶查詢表達(dá)式212 Lucene內(nèi)部提供了相關(guān)度計(jì)算方法,對(duì)每一為了滿足不同的排序需求,Lucene還提供了Lucene(1)Sort 1public2publicSort(SortField ublicSortSortField...指定。fields(2)SortFieldSortField1publicSortField(Stringfield,intieldtpetpe.若type取值為SortField.SCORE或SortField.DOC,參field可以為null2publicSortField(String參數(shù)由reverse指定了排序的順序,若為true,表3publicSortField(Stringfield,Locale4publicSortField(String總之,SortField類指定了排序的標(biāo)準(zhǔn),即結(jié)參加排序的字段必須在文檔中存在,且已經(jīng) 結(jié)果過濾是指查從詢表達(dá)式獲得的結(jié)果中去 或其他判斷用戶所在的位置,當(dāng)用戶查詢某一的,從已有的查詢中找出符合特定條件的子集。查查第三,過濾功能可以使用緩存來被過濾的字段,Lucene實(shí)現(xiàn)過濾的類稱為過濾器,它們的基(1)(3)(3)(5)(7)TermsFilter類是多語詞過濾器,是Filter其效果與等價(jià)的布爾查詢(在查詢表達(dá)式基礎(chǔ)TermsFilter類在Lucene的\contrib\queries子目TermsFilter類僅有一個(gè)構(gòu)造方法,創(chuàng)建一個(gè)publicTermsFilter類的常用方法是向多語詞過濾器publicvoidaddTerm(Term 項(xiàng)目:過濾器示例FieldCacheRangeFilter<T> 在以后使用該過濾器時(shí),重用緩存中的內(nèi)容,從而提高了檢索的速度,而多語詞過濾器不支持緩 項(xiàng)目:過濾器示例 的文返回題名字段title中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年特種線纜材料項(xiàng)目可行性分析報(bào)告
- 2025年電動(dòng)平板車市場(chǎng)分析報(bào)告
- 中國(guó)生物基 1,5-戊二醇行業(yè)市場(chǎng)前景預(yù)測(cè)及投資價(jià)值評(píng)估分析報(bào)告
- 2025年婚戀交友網(wǎng)站市場(chǎng)發(fā)展現(xiàn)狀
- 電力設(shè)備產(chǎn)業(yè)園可行性研究報(bào)告
- 中國(guó)混凝土項(xiàng)目商業(yè)計(jì)劃書
- 2025年黑龍江省地區(qū)融資經(jīng)理職位薪酬調(diào)查報(bào)告
- 高低壓配電柜生產(chǎn)項(xiàng)目可行性研究報(bào)告立項(xiàng)申請(qǐng)報(bào)告范文
- 英倫風(fēng)格商業(yè)計(jì)劃書
- 制造業(yè)信用風(fēng)險(xiǎn)研究-基于上市公司的實(shí)證分析
- 醫(yī)院用工合同醫(yī)院用工合同書(2024版)
- 管培生培養(yǎng)方案
- 口腔正畸學(xué)之矯治器及其制作技術(shù)常用器械課件
- 江蘇省淮安市淮陰區(qū)淮陰中學(xué)2025屆高一下生物期末質(zhì)量檢測(cè)試題含解析
- 2024屆江蘇省淮安市數(shù)學(xué)高一下期末考試試題含解析
- JTG-H30-2015公路養(yǎng)護(hù)安全作業(yè)規(guī)程
- 危險(xiǎn)化學(xué)品考試試題(含答案)
- MOOC 化工原理(下冊(cè))-大連理工大學(xué) 中國(guó)大學(xué)慕課答案
- 2024年濟(jì)南天橋區(qū)九年級(jí)中考英語一模考試試題(含答案)
- 網(wǎng)紅打卡地打造策劃思路
- 氟硅酸鈉安全技術(shù)說明書MSDS
評(píng)論
0/150
提交評(píng)論