|
@@ -254,25 +254,7 @@ class searcher
|
|
|
return array();
|
|
|
}
|
|
|
|
|
|
- $i = 0;
|
|
|
- $ids = [];
|
|
|
- foreach ($words as $word)
|
|
|
- {
|
|
|
- $ids = $dict->find($word);
|
|
|
- if($i == 0) {
|
|
|
- $ids = $ids;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- $tmp = algorithm::intersection($ids,$ids);
|
|
|
- $ids = $tmp;
|
|
|
-
|
|
|
- if(empty($ids)) {
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- ++$i;
|
|
|
- }
|
|
|
+ $ids = $this->get_ids($dict, $words);
|
|
|
|
|
|
$result = [];
|
|
|
foreach ($ids as $id) {
|
|
@@ -303,8 +285,48 @@ class searcher
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
- public function get_result($key)
|
|
|
+ public function get_result($input)
|
|
|
{
|
|
|
+ $words = [];
|
|
|
+ foreach (mb_str_split($input) as $word)
|
|
|
+ {
|
|
|
+ if(filter::filter($word)) {
|
|
|
+ $words[] = $word;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $name_ids = $this->get_ids($this->name_dict,$words);
|
|
|
+ $jin_ids = $this->get_ids($this->jingle_dict,$words);
|
|
|
+ $goods_ids = algorithm::set_union($name_ids,$jin_ids);
|
|
|
+
|
|
|
+ $brands = $this->get_ids($this->brand_dict,$words);
|
|
|
+ $hot_ids = $this->get_ids($this->category_dict,$words);
|
|
|
+
|
|
|
+ return array("brands" => $brands,"category" => $hot_ids,"goods" => $goods_ids);
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * @param $dict
|
|
|
+ * @param $words
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ private function get_ids($dict, $words)
|
|
|
+ {
|
|
|
+ $i = 0;
|
|
|
+ $ids = [];
|
|
|
+ foreach ($words as $word) {
|
|
|
+ $ids = $dict->find($word);
|
|
|
+ if ($i == 0) {
|
|
|
+ $ids = $ids;
|
|
|
+ } else {
|
|
|
+ $tmp = algorithm::set_intersection($ids, $ids);
|
|
|
+ $ids = $tmp;
|
|
|
+
|
|
|
+ if (empty($ids)) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ++$i;
|
|
|
+ }
|
|
|
+ return $ids;
|
|
|
}
|
|
|
}
|