Tüm içerik türlerini Endekslemede drupal aramayı kısıtlamak nasıl?

2 Cevap php

Ben yalnızca belirli düğümler endeksli olmak istiyorum. "Arama config" modülü bu yeteneğe sahip olduğunu iddia ediyor, ama çalışmıyor. Peki, ben de sadece index belirli düğümlere düğüm modülünü düzenlerim, ya da daha iyisi, benim için bunu bir modül impliment?

2 Cevap

Bu a long standing feature request, ama zaten en az Drupal 8 :/ itti oldu gibi görünüyor

Sen yukarıda bağlantılı özellik isteği tartışmada bazı çözüm önerileri bulabilirsiniz, ancak arama yapılandırma modülü tarafından kullanılan 'standart' bir yaklaşımdır described here. Bu endeksli olmaktan düğümleri önlemek, ancak arama sonucu sayfalarında görünmüyor böylece belirli girdileri (örneğin düğüm türleri) görmezden arama sorgularını manipüle etmez.

An (afaik) de iyi bir çözüm yok tabii ki var olduğu gibi, ben arama yapılandırma modülü özel kendi çözüm kodlama başlamadan önce sizin için neden çalışmıyor önce kontrol etmelisiniz ceejayoz 'yorum katılıyorum.

Eğer düğüm modülün kendisini düzenlemeye başvurmak varsa, node_update_index() başlatmak için bir yer olurdu.

İşte node_update_index() dan endeksli gerekenleri belirleyen sorgu var:

SELECT n.nid FROM {node} n 
  LEFT JOIN {search_dataset} d ON d.type = 'node' AND d.sid = n.nid 
  WHERE d.sid IS NULL OR d.reindex <> 0
  ORDER BY d.reindex ASC, n.nid ASC

You can't prevent the indexing script from running. But you can trick that query into thinking content is already indexed by inserting dummy entries into {search_dataset}.

Eğer MySQL kullanıyorsanız Örneğin, cron bunu yapmak:

INSERT INTO {search_dataset} 
  (sid, type, data, reindex)
  SELECT nid, 'node', '', 0 FROM {node} WHERE node.type IN (RESTRICTED_TYPES)
  ON DUPLICATE KEY UPDATE reindex = 0, data = ''

Düğüm türleri listesi ile "RESTRICTED_TYPES" değiştirin ve arama kısıtlamak istediğiniz her varlık için benzer bir sorgu yapmak.