2013-02-20 92 views
0

問題是這樣的:我有一列(名爲客戶名),其中包括名稱爲示例「JOHN LENARD SMITH」等。我如何才能查詢,只會找到名字和姓氏

所以我想做一個查詢,它會得到所有名字'JOHN'和姓'SMITH'的所有名字;第二個名字並不重要,所以我會放*通配符。

也有一個更大的問題:我應該能夠在一個情況下,如果用戶寫道:「約翰·萊納德SMITH」找到這個確切的人

我曾嘗試:

1. 我做字段text_ws鍵入並測試了以下查詢: 問題是這樣的:我有一個列(名爲name),其中包含示例「ИванКириловПетров」,「НинаСемоваМариножа」等的名稱。

所以我想做一個查詢,將得到所有的名字'Иван'和姓'Петров';第二個名字並不重要,所以我會放*通配符。

也有一個更大的問題:我應該能夠在一個情況下,如果用戶寫道:「ИванКириловПетров」找到這個確切的人

我曾嘗試:

我做了場text_ws鍵入並測試以下查詢:

q=cust_name:JOHN*SMITH 


q=cust_name:/JOHN.*SMITH/ 

沒有用!我「M絕望,我想我會永遠解決不了這個任務。

+0

請別人解釋爲什麼我寫了名字/約翰*史密斯/它完美的工作,昨天它再次明天工作,然後我的同事剛在模式中添加了一個新列,甚至沒有接觸我的列名,然後停下來,現在它再次運作!我不知道是否每次我進行數據導入時都有機會以不同的方式進行索引。 – 2013-02-21 07:48:13

回答

-1

讓用戶在三個獨立的字段中輸入名稱。連接結果。如果有任何空白,替代了通配符。

+0

機智並不重要,如果用戶在一個或三個字段中輸入搜索名稱(當它在一個字段中,我只是根據空格分隔名稱,所以我有單獨的名稱)!重要的是inteh數據庫的三個名字在一列,我的查詢不起作用 – 2013-02-20 18:47:16

+0

你使用的是什麼平臺? (MS Access,SQL Server 2008等) – 2013-02-20 18:54:00

+0

我正在使用postgresql – 2013-02-20 19:15:23

0

既然你使用text_ws領域,你需要有空格在您的查詢,以便Solr的可查詢拆分成將匹配的索引值方面爲您的JOHN SMITH例如,下面應該工作:

q=cust_name:JOHN * SMITH 

如果您正在尋找名字中任何地方出現的JOHN或SMITH,你也可以使用以下內容,但它聽起來很不錯基於這個例子,對於你來說,位置很重要。

q=cust_name:JOHN SMITH 

此外,在查詢中使用保留空白將使搜索JOHN LENARD SMITH也能夠正常工作。

q=cust_name:JOHN LENARD SMITH 

最後,我建議加入LowerCaseTokenizerFactorytext_ws場,這樣的術語索引和進行搜索爲小寫,否則爲John * Smith搜索不會因爲此案的差異相匹配。

+0

不幸的是,當我寫約翰*史密斯它給我所有與約翰開始的名字!我想我會爲這個solr瘋狂!我確信,昨天早上它與JOHN * SMITH完美合作 – 2013-02-21 07:07:14

相關問題