成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Sphinx 單詞+數(shù)字索引

jasperyang / 2219人閱讀

摘要:總結(jié)兩種方式都能起作用,中綴索引比較簡單,但會大幅度增加索引文件的大小和索引的速度安裝正則引擎比較煩,而且要重新編譯安裝但對索引文件的大小和索引速度的影響較小。

導(dǎo)讀

Sphinx 是一個非常強大的全文搜索引擎,能處理各種復(fù)雜的索引請求.但有時候需要一些特殊的設(shè)置.

問題

比如文檔中有一種詞,該詞包含了字母和數(shù)字,比如(onepiece123) 如果一般情況下直接搜索onepiece或者123的時候,你是得不到這個文檔的.

原因

sphinx在處理單詞時,把整個詞看作一個整體,用關(guān)鍵詞搜索的時候也是,比如,搜索詞如果是onepiece,那么得到的文檔只能是包含了onepiece這個詞段(如onepiece 123)的才能被索引到,否則除非直接搜索onepiece123,你是得不到文檔onepiece123的.

解決方式

這種時候有兩種方式可以解決:

中綴索引

設(shè)置中綴索引長度,中綴索引可以讓我們進(jìn)行通配符搜索文檔的操作,比如word, word*, *word

min_infix_len

中綴索引長度默認(rèn)為0,即不做中綴索引,假如設(shè)置成一個合適的長度,那么就能根據(jù)單詞的某一部分查找到對應(yīng)的文檔,比如把min_infix_len 設(shè)置為2, 那么文檔中包含test的詞匯就會被分成 te, es, st tes, est,test這幾種(最小長度2),當(dāng)我們用關(guān)鍵字es 去搜索的時候,就能命中這個包含test的文檔,當(dāng)然,這也導(dǎo)致了我們的索引文件大小大幅度增加,索引速度降低的問題

為了解決開始的時候我們提到的這種單詞帶數(shù)字的查找,我們可以設(shè)置一個比較合適的中綴索引長度,比如8,那么包含onepiece123這個詞的文檔會被分成onepiece, onepiece1, onepiece12, onepiece123, nepiece12,...等等(按順序包含至少8個原有字符,不能跳過任意的字母),這樣,當(dāng)我們搜索oinepiece的時候, 因為原有的oinepiece123文檔被分成了包含了onepiece等多個的文檔,我們就能命中這個oinepiece123所在的文檔了.

設(shè)置regexp_filter

該設(shè)置允許我們通過正則的方式映射最終的文檔格式.那樣的話我們就能統(tǒng)一一些常見的單詞或者短語的格式了.
比如

"iphone 3gs" , "iphone 3 gs" (或者甚是 "iphone3 gs")

當(dāng)我們在搜索這些關(guān)鍵詞的時候,我們都希望能命中包含iphone3gs這個文檔,我們可以像這樣設(shè)置索引:
  

regexp_filter?。健(iphone 3gs)| (iphone 3 gs) | (iphone3 gs)] => iphone3gs

  這樣在創(chuàng)建索引的時候, 所有包含上面三種的iphone 3gs的格式都能映射成iphone3gs, 在搜索iphone3gs的時候, 就能命中所有包含上面三種詞的文檔了

  回歸我們的初始問題,這種方式處理單詞+數(shù)字的索引設(shè)置可以這么設(shè)置

regexp_filter?。健?[a-z|A-Z]+)(d+) =>1 2

  "1"和"2"之間有空格,"1"對應(yīng)單詞的正則匹配, "2"對應(yīng)數(shù)字的正則匹配,中間加了一個空格,這就表示在創(chuàng)建索引的時候單詞+數(shù)字的文檔會被分開.
  不過要說明的是,如果想使用這個配置,需要安裝一個名叫re2的正則引擎替代系統(tǒng)內(nèi)置的正則引擎,安裝好后重新編譯安裝sphinx的源碼,在./configure的時候帶上參數(shù) 
--with-re2,然后regexp_filter才會游泳

  這樣也能解決單詞+數(shù)字的搜索問題。

總結(jié)

  兩種方式都能起作用,中綴索引比較簡單,但會大幅度增加索引文件的大小和索引的速度.regexp_filter安裝正則引擎比較煩,而且要重新編譯安裝sphinx, 但對索引文件的大小和索引速度的影響較小。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/20948.html

相關(guān)文章

  • 使用sphinx search打造你自己的中文搜索引

    摘要:本文以為例來介紹如何打造自己的搜索引擎。其官方網(wǎng)站是可以說支持包括英文中文等所有語言的搜索。默認(rèn)把中文按字拆分的,但這樣就會產(chǎn)生搜索出不相干的內(nèi)容來。因此,有人就給打了中文分詞的補丁。 Google搜索引擎建立至今已經(jīng)快20年了,之后全球各類大大小小類似的搜索引擎也陸續(xù)出現(xiàn)、消亡。國內(nèi)目前以百度為大,搜狗、360、必應(yīng)等也勢在必爭。搜索引擎技術(shù)也發(fā)展的相當(dāng)成熟,同時也就出現(xiàn)了很多開源的...

    trigkit4 評論0 收藏0
  • Centos 編譯安裝sphinx-0.9.9全文檢索

    摘要:簡介是開源的搜索引擎,它支持英文的全文檢索。但是往往我們要求的是中文索引,怎么做呢國人提供了一個可供企業(yè)使用的,基于的中文全文檢索引擎。 Sphinx 簡介 Sphinx是開源的搜索引擎,它支持英文的全文檢索。所以如果單獨搭建Sphinx,你就已經(jīng)可以使用全文索引了。但是往往我們要求的是中文索引,怎么做呢?國人提供了一個可供企業(yè)使用的,基于Sphinx的中文全文檢索引擎。也就是說Cor...

    LeoHsiun 評論0 收藏0
  • Centos 編譯安裝sphinx-0.9.9全文檢索

    摘要:簡介是開源的搜索引擎,它支持英文的全文檢索。但是往往我們要求的是中文索引,怎么做呢國人提供了一個可供企業(yè)使用的,基于的中文全文檢索引擎。 Sphinx 簡介 Sphinx是開源的搜索引擎,它支持英文的全文檢索。所以如果單獨搭建Sphinx,你就已經(jīng)可以使用全文索引了。但是往往我們要求的是中文索引,怎么做呢?國人提供了一個可供企業(yè)使用的,基于Sphinx的中文全文檢索引擎。也就是說Cor...

    馬龍駒 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<