Ben boolean modunda kısmi bir maç tam metin arama çalışmasına biçimlendirmek sonra, kullanıcı tarafından girilen bir arama dize 544 tam metin stopwords herhangi örneklerini kaldırmak gerekir.
girdi: "new york city" çıktı: "+ york * + şehir *" ("yeni" a stopword olduğunu).
Ben çalışan bir çirkin çözüm var: kelimelerin bir diziye arama dizesini patlayabilir stopwords dizideki her kelimeyi aramak, bir maç varsa bunları yoketmek, kalan kelimeleri implode ve nihayet boolean modu eklemek için bir regex çalıştırın biçimlendirme. Daha zarif bir çözüm olmalı.
Benim soru 2 bölümden oluşmaktadır.
1) bunu yapmak için temiz yoldur ne düşünüyorsunuz?
2) Ben büyük bir regex kullanarak sorunun bir kısmını çözmüş ama bu başka bir soru kaldırdı.
EDIT: Bu aslında çalışır. Ben (ve benim regex olduğuna inanıyordu) sahip olduğu hafıza sorunu aslında stopwords filtreleme nedeniyle sonra maç çok sayıda daha sonra kodu oluşturulur olduğunu söylemeye utanıyorum.
$tmp = preg_replace('/(\b('.implode('|',$stopwords).')\b)+/','',$this->val);
$boolified = preg_replace('/([^\s]+)/','+$1*',$tmp);